diff --git a/dist/restore/index.js b/dist/restore/index.js
index 7a04776..f8f36f1 100644
--- a/dist/restore/index.js
+++ b/dist/restore/index.js
@@ -48,6 +48,25 @@ module.exports =
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -58,11 +77,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-const childProcess = __webpack_require__(129);
-const path = __webpack_require__(622);
+exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
+const assert_1 = __webpack_require__(357);
+const childProcess = __importStar(__webpack_require__(129));
+const path = __importStar(__webpack_require__(622));
 const util_1 = __webpack_require__(669);
-const ioUtil = __webpack_require__(672);
+const ioUtil = __importStar(__webpack_require__(672));
 const exec = util_1.promisify(childProcess.exec);
+const execFile = util_1.promisify(childProcess.execFile);
 /**
  * Copies a file or folder.
  * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
@@ -73,14 +95,14 @@ const exec = util_1.promisify(childProcess.exec);
  */
 function cp(source, dest, options = {}) {
     return __awaiter(this, void 0, void 0, function* () {
-        const { force, recursive } = readCopyOptions(options);
+        const { force, recursive, copySourceDirectory } = readCopyOptions(options);
         const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
         // Dest is an existing file, but not forcing
         if (destStat && destStat.isFile() && !force) {
             return;
         }
         // If dest is an existing directory, should copy inside.
-        const newDest = destStat && destStat.isDirectory()
+        const newDest = destStat && destStat.isDirectory() && copySourceDirectory
             ? path.join(dest, path.basename(source))
             : dest;
         if (!(yield ioUtil.exists(source))) {
@@ -145,12 +167,22 @@ function rmRF(inputPath) {
         if (ioUtil.IS_WINDOWS) {
             // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
             // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
+            // Check for invalid characters
+            // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
+            if (/[*"<>|]/.test(inputPath)) {
+                throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
+            }
             try {
+                const cmdPath = ioUtil.getCmdPath();
                 if (yield ioUtil.isDirectory(inputPath, true)) {
-                    yield exec(`rd /s /q "${inputPath}"`);
+                    yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, {
+                        env: { inputPath }
+                    });
                 }
                 else {
-                    yield exec(`del /f /a "${inputPath}"`);
+                    yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
+                        env: { inputPath }
+                    });
                 }
             }
             catch (err) {
@@ -183,7 +215,7 @@ function rmRF(inputPath) {
                 return;
             }
             if (isDir) {
-                yield exec(`rm -rf "${inputPath}"`);
+                yield execFile(`rm`, [`-rf`, `${inputPath}`]);
             }
             else {
                 yield ioUtil.unlink(inputPath);
@@ -201,7 +233,8 @@ exports.rmRF = rmRF;
  */
 function mkdirP(fsPath) {
     return __awaiter(this, void 0, void 0, function* () {
-        yield ioUtil.mkdirP(fsPath);
+        assert_1.ok(fsPath, 'a path argument must be provided');
+        yield ioUtil.mkdir(fsPath, { recursive: true });
     });
 }
 exports.mkdirP = mkdirP;
@@ -229,62 +262,80 @@ function which(tool, check) {
                     throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
                 }
             }
+            return result;
         }
-        try {
-            // build the list of extensions to try
-            const extensions = [];
-            if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
-                for (const extension of process.env.PATHEXT.split(path.delimiter)) {
-                    if (extension) {
-                        extensions.push(extension);
-                    }
-                }
-            }
-            // if it's rooted, return it if exists. otherwise return empty.
-            if (ioUtil.isRooted(tool)) {
-                const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
-                if (filePath) {
-                    return filePath;
-                }
-                return '';
-            }
-            // if any path separators, return empty
-            if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
-                return '';
-            }
-            // build the list of directories
-            //
-            // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
-            // it feels like we should not do this. Checking the current directory seems like more of a use
-            // case of a shell, and the which() function exposed by the toolkit should strive for consistency
-            // across platforms.
-            const directories = [];
-            if (process.env.PATH) {
-                for (const p of process.env.PATH.split(path.delimiter)) {
-                    if (p) {
-                        directories.push(p);
-                    }
-                }
-            }
-            // return the first match
-            for (const directory of directories) {
-                const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
-                if (filePath) {
-                    return filePath;
-                }
-            }
-            return '';
-        }
-        catch (err) {
-            throw new Error(`which failed with message ${err.message}`);
+        const matches = yield findInPath(tool);
+        if (matches && matches.length > 0) {
+            return matches[0];
         }
+        return '';
     });
 }
 exports.which = which;
+/**
+ * Returns a list of all occurrences of the given tool on the system path.
+ *
+ * @returns   Promise<string[]>  the paths of the tool
+ */
+function findInPath(tool) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!tool) {
+            throw new Error("parameter 'tool' is required");
+        }
+        // build the list of extensions to try
+        const extensions = [];
+        if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {
+            for (const extension of process.env['PATHEXT'].split(path.delimiter)) {
+                if (extension) {
+                    extensions.push(extension);
+                }
+            }
+        }
+        // if it's rooted, return it if exists. otherwise return empty.
+        if (ioUtil.isRooted(tool)) {
+            const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
+            if (filePath) {
+                return [filePath];
+            }
+            return [];
+        }
+        // if any path separators, return empty
+        if (tool.includes(path.sep)) {
+            return [];
+        }
+        // build the list of directories
+        //
+        // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
+        // it feels like we should not do this. Checking the current directory seems like more of a use
+        // case of a shell, and the which() function exposed by the toolkit should strive for consistency
+        // across platforms.
+        const directories = [];
+        if (process.env.PATH) {
+            for (const p of process.env.PATH.split(path.delimiter)) {
+                if (p) {
+                    directories.push(p);
+                }
+            }
+        }
+        // find all matches
+        const matches = [];
+        for (const directory of directories) {
+            const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);
+            if (filePath) {
+                matches.push(filePath);
+            }
+        }
+        return matches;
+    });
+}
+exports.findInPath = findInPath;
 function readCopyOptions(options) {
     const force = options.force == null ? true : options.force;
     const recursive = Boolean(options.recursive);
-    return { force, recursive };
+    const copySourceDirectory = options.copySourceDirectory == null
+        ? true
+        : Boolean(options.copySourceDirectory);
+    return { force, recursive, copySourceDirectory };
 }
 function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
     return __awaiter(this, void 0, void 0, function* () {
@@ -339,42 +390,7 @@ function copyFile(srcFile, destFile, force) {
 //# sourceMappingURL=io.js.map
 
 /***/ }),
-/* 2 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defaultGetter = void 0;
-/**
- * Default getter which just does a simple property access. Returns
- * undefined if the key is not set.
- *
- * @param carrier
- * @param key
- */
-function defaultGetter(carrier, key) {
-    return carrier[key];
-}
-exports.defaultGetter = defaultGetter;
-//# sourceMappingURL=getter.js.map
-
-/***/ }),
+/* 2 */,
 /* 3 */,
 /* 4 */,
 /* 5 */,
@@ -386,6 +402,25 @@ exports.defaultGetter = defaultGetter;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -395,20 +430,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.argStringToArray = exports.ToolRunner = void 0;
 const os = __importStar(__webpack_require__(87));
 const events = __importStar(__webpack_require__(614));
 const child = __importStar(__webpack_require__(129));
 const path = __importStar(__webpack_require__(622));
 const io = __importStar(__webpack_require__(1));
 const ioUtil = __importStar(__webpack_require__(672));
+const timers_1 = __webpack_require__(213);
 /* eslint-disable @typescript-eslint/unbound-method */
 const IS_WINDOWS = process.platform === 'win32';
 /*
@@ -478,11 +508,12 @@ class ToolRunner extends events.EventEmitter {
                 s = s.substring(n + os.EOL.length);
                 n = s.indexOf(os.EOL);
             }
-            strBuffer = s;
+            return s;
         }
         catch (err) {
             // streaming lines to console is best effort.  Don't fail a build.
             this._debug(`error processing line. Failed with error ${err}`);
+            return '';
         }
     }
     _getSpawnFileName() {
@@ -764,7 +795,7 @@ class ToolRunner extends events.EventEmitter {
             // if the tool is only a file name, then resolve it from the PATH
             // otherwise verify it exists (add extension on Windows if necessary)
             this.toolPath = yield io.which(this.toolPath, true);
-            return new Promise((resolve, reject) => {
+            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
                 this._debug(`exec tool: ${this.toolPath}`);
                 this._debug('arguments:');
                 for (const arg of this.args) {
@@ -778,9 +809,12 @@ class ToolRunner extends events.EventEmitter {
                 state.on('debug', (message) => {
                     this._debug(message);
                 });
+                if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {
+                    return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));
+                }
                 const fileName = this._getSpawnFileName();
                 const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
-                const stdbuffer = '';
+                let stdbuffer = '';
                 if (cp.stdout) {
                     cp.stdout.on('data', (data) => {
                         if (this.options.listeners && this.options.listeners.stdout) {
@@ -789,14 +823,14 @@ class ToolRunner extends events.EventEmitter {
                         if (!optionsNonNull.silent && optionsNonNull.outStream) {
                             optionsNonNull.outStream.write(data);
                         }
-                        this._processLineBuffer(data, stdbuffer, (line) => {
+                        stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {
                             if (this.options.listeners && this.options.listeners.stdline) {
                                 this.options.listeners.stdline(line);
                             }
                         });
                     });
                 }
-                const errbuffer = '';
+                let errbuffer = '';
                 if (cp.stderr) {
                     cp.stderr.on('data', (data) => {
                         state.processStderr = true;
@@ -811,7 +845,7 @@ class ToolRunner extends events.EventEmitter {
                                 : optionsNonNull.outStream;
                             s.write(data);
                         }
-                        this._processLineBuffer(data, errbuffer, (line) => {
+                        errbuffer = this._processLineBuffer(data, errbuffer, (line) => {
                             if (this.options.listeners && this.options.listeners.errline) {
                                 this.options.listeners.errline(line);
                             }
@@ -858,7 +892,7 @@ class ToolRunner extends events.EventEmitter {
                     }
                     cp.stdin.end(this.options.input);
                 }
-            });
+            }));
         });
     }
 }
@@ -944,7 +978,7 @@ class ExecState extends events.EventEmitter {
             this._setResult();
         }
         else if (this.processExited) {
-            this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
+            this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);
         }
     }
     _debug(message) {
@@ -1058,10 +1092,10 @@ function createTempDirectory() {
     });
 }
 exports.createTempDirectory = createTempDirectory;
-function getArchiveFileSizeIsBytes(filePath) {
+function getArchiveFileSizeInBytes(filePath) {
     return fs.statSync(filePath).size;
 }
-exports.getArchiveFileSizeIsBytes = getArchiveFileSizeIsBytes;
+exports.getArchiveFileSizeInBytes = getArchiveFileSizeInBytes;
 function resolvePaths(patterns) {
     var e_1, _a;
     var _b;
@@ -1074,7 +1108,9 @@ function resolvePaths(patterns) {
         try {
             for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) {
                 const file = _d.value;
-                const relativeFile = path.relative(workspace, file);
+                const relativeFile = path
+                    .relative(workspace, file)
+                    .replace(new RegExp(`\\${path.sep}`, 'g'), '/');
                 core.debug(`Matched: ${relativeFile}`);
                 // Paths are made relative so the tar entries are all relative to the root of the workspace.
                 paths.push(`${relativeFile}`);
@@ -1262,18 +1298,24 @@ eval("require")("encoding");
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.PropagationAPI = void 0;
-var getter_1 = __webpack_require__(2);
-var NoopHttpTextPropagator_1 = __webpack_require__(744);
-var setter_1 = __webpack_require__(753);
-var context_1 = __webpack_require__(492);
-var global_utils_1 = __webpack_require__(976);
-var contextApi = context_1.ContextAPI.getInstance();
+var global_utils_1 = __webpack_require__(525);
+var NoopTextMapPropagator_1 = __webpack_require__(918);
+var TextMapPropagator_1 = __webpack_require__(881);
+var context_helpers_1 = __webpack_require__(483);
+var utils_1 = __webpack_require__(112);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'propagation';
+var NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Propagation API
  */
 var PropagationAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function PropagationAPI() {
+        this.createBaggage = utils_1.createBaggage;
+        this.getBaggage = context_helpers_1.getBaggage;
+        this.setBaggage = context_helpers_1.setBaggage;
+        this.deleteBaggage = context_helpers_1.deleteBaggage;
     }
     /** Get the singleton instance of the Propagator API */
     PropagationAPI.getInstance = function () {
@@ -1283,47 +1325,47 @@ var PropagationAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current propagator. Returns the initialized propagator
+     * Set the current propagator.
+     *
+     * @returns true if the propagator was successfully registered, else false
      */
     PropagationAPI.prototype.setGlobalPropagator = function (propagator) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY]) {
-            // global propagator has already been set
-            return this._getGlobalPropagator();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, propagator, NoopHttpTextPropagator_1.NOOP_HTTP_TEXT_PROPAGATOR);
-        return propagator;
+        return global_utils_1.registerGlobal(API_NAME, propagator, diag_1.DiagAPI.instance());
     };
     /**
      * Inject context into a carrier to be propagated inter-process
      *
+     * @param context Context carrying tracing data to inject
      * @param carrier carrier to inject context into
      * @param setter Function used to set values on the carrier
-     * @param context Context carrying tracing data to inject. Defaults to the currently active context.
      */
-    PropagationAPI.prototype.inject = function (carrier, setter, context) {
-        if (setter === void 0) { setter = setter_1.defaultSetter; }
-        if (context === void 0) { context = contextApi.active(); }
+    PropagationAPI.prototype.inject = function (context, carrier, setter) {
+        if (setter === void 0) { setter = TextMapPropagator_1.defaultTextMapSetter; }
         return this._getGlobalPropagator().inject(context, carrier, setter);
     };
     /**
      * Extract context from a carrier
      *
+     * @param context Context which the newly created context will inherit from
      * @param carrier Carrier to extract context from
      * @param getter Function used to extract keys from a carrier
-     * @param context Context which the newly created context will inherit from. Defaults to the currently active context.
      */
-    PropagationAPI.prototype.extract = function (carrier, getter, context) {
-        if (getter === void 0) { getter = getter_1.defaultGetter; }
-        if (context === void 0) { context = contextApi.active(); }
+    PropagationAPI.prototype.extract = function (context, carrier, getter) {
+        if (getter === void 0) { getter = TextMapPropagator_1.defaultTextMapGetter; }
         return this._getGlobalPropagator().extract(context, carrier, getter);
     };
+    /**
+     * Return a list of all fields which may be used by the propagator.
+     */
+    PropagationAPI.prototype.fields = function () {
+        return this._getGlobalPropagator().fields();
+    };
     /** Remove the global propagator */
     PropagationAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     PropagationAPI.prototype._getGlobalPropagator = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopHttpTextPropagator_1.NOOP_HTTP_TEXT_PROPAGATOR);
+        return global_utils_1.getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;
     };
     return PropagationAPI;
 }());
@@ -1354,94 +1396,17 @@ exports.default = _default;
 /* 30 */,
 /* 31 */,
 /* 32 */,
-/* 33 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=HttpTextPropagator.js.map
-
-/***/ }),
+/* 33 */,
 /* 34 */,
 /* 35 */,
 /* 36 */,
 /* 37 */,
 /* 38 */,
 /* 39 */,
-/* 40 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.EntryTtl = void 0;
-/**
- * EntryTtl is an integer that represents number of hops an entry can propagate.
- *
- * For now, ONLY special values (0 and -1) are supported.
- */
-var EntryTtl;
-(function (EntryTtl) {
-    /**
-     * NO_PROPAGATION is considered to have local context and is used within the
-     * process it created.
-     */
-    EntryTtl[EntryTtl["NO_PROPAGATION"] = 0] = "NO_PROPAGATION";
-    /** UNLIMITED_PROPAGATION can propagate unlimited hops. */
-    EntryTtl[EntryTtl["UNLIMITED_PROPAGATION"] = -1] = "UNLIMITED_PROPAGATION";
-})(EntryTtl = exports.EntryTtl || (exports.EntryTtl = {}));
-//# sourceMappingURL=EntryValue.js.map
-
-/***/ }),
+/* 40 */,
 /* 41 */,
 /* 42 */,
-/* 43 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ValueType = void 0;
-/** The Type of value. It describes how the data is reported. */
-var ValueType;
-(function (ValueType) {
-    ValueType[ValueType["INT"] = 0] = "INT";
-    ValueType[ValueType["DOUBLE"] = 1] = "DOUBLE";
-})(ValueType = exports.ValueType || (exports.ValueType = {}));
-//# sourceMappingURL=Metric.js.map
-
-/***/ }),
+/* 43 */,
 /* 44 */,
 /* 45 */,
 /* 46 */,
@@ -1491,12 +1456,21 @@ module.exports = ["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad
 /* 68 */,
 /* 69 */,
 /* 70 */
-/***/ (function(__unusedmodule, exports) {
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=trace_state.js.map
+
+exports.URL = __webpack_require__(782).interface;
+exports.serializeURL = __webpack_require__(936).serializeURL;
+exports.serializeURLOrigin = __webpack_require__(936).serializeURLOrigin;
+exports.basicURLParse = __webpack_require__(936).basicURLParse;
+exports.setTheUsername = __webpack_require__(936).setTheUsername;
+exports.setThePassword = __webpack_require__(936).setThePassword;
+exports.serializeHost = __webpack_require__(936).serializeHost;
+exports.serializeInteger = __webpack_require__(936).serializeInteger;
+exports.parseURL = __webpack_require__(936).parseURL;
+
 
 /***/ }),
 /* 71 */
@@ -1528,6 +1502,7 @@ if (typeof Symbol === undefined || !Symbol.asyncIterator) {
 // We use any as a valid input type
 /* eslint-disable @typescript-eslint/no-explicit-any */
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.toCommandProperties = exports.toCommandValue = void 0;
 /**
  * Sanitizes an input into a string so it can be passed into issueCommand safely
  * @param input input to sanitize into a string
@@ -1542,6 +1517,26 @@ function toCommandValue(input) {
     return JSON.stringify(input);
 }
 exports.toCommandValue = toCommandValue;
+/**
+ *
+ * @param annotationProperties
+ * @returns The command properties to send with the actual annotation command
+ * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
+ */
+function toCommandProperties(annotationProperties) {
+    if (!Object.keys(annotationProperties).length) {
+        return {};
+    }
+    return {
+        title: annotationProperties.title,
+        file: annotationProperties.file,
+        line: annotationProperties.startLine,
+        endLine: annotationProperties.endLine,
+        col: annotationProperties.startColumn,
+        endColumn: annotationProperties.endColumn
+    };
+}
+exports.toCommandProperties = toCommandProperties;
 //# sourceMappingURL=utils.js.map
 
 /***/ }),
@@ -2759,14 +2754,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
 "use strict";
 
 // For internal use, subject to change.
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
     return result;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.issueCommand = void 0;
 // We use any as a valid input type
 /* eslint-disable @typescript-eslint/no-explicit-any */
 const fs = __importStar(__webpack_require__(747));
@@ -2825,8 +2833,10 @@ exports.default = _default;
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(422);
+var tslib = __webpack_require__(640);
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 var listenersMap = new WeakMap();
 var abortedMap = new WeakMap();
 /**
@@ -2837,19 +2847,15 @@ var abortedMap = new WeakMap();
  * cannot or will not ever be cancelled.
  *
  * @example
- * // Abort without timeout
+ * Abort without timeout
+ * ```ts
  * await doAsyncWork(AbortSignal.none);
- *
- * @export
- * @class AbortSignal
- * @implements {AbortSignalLike}
+ * ```
  */
 var AbortSignal = /** @class */ (function () {
     function AbortSignal() {
         /**
          * onabort event listener.
-         *
-         * @memberof AbortSignal
          */
         this.onabort = null;
         listenersMap.set(this, []);
@@ -2860,8 +2866,6 @@ var AbortSignal = /** @class */ (function () {
          * Status of whether aborted or not.
          *
          * @readonly
-         * @type {boolean}
-         * @memberof AbortSignal
          */
         get: function () {
             if (!abortedMap.has(this)) {
@@ -2869,7 +2873,7 @@ var AbortSignal = /** @class */ (function () {
             }
             return abortedMap.get(this);
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     Object.defineProperty(AbortSignal, "none", {
@@ -2877,22 +2881,18 @@ var AbortSignal = /** @class */ (function () {
          * Creates a new AbortSignal instance that will never be aborted.
          *
          * @readonly
-         * @static
-         * @type {AbortSignal}
-         * @memberof AbortSignal
          */
         get: function () {
             return new AbortSignal();
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     /**
      * Added new "abort" event listener, only support "abort" event.
      *
-     * @param {"abort"} _type Only support "abort" event
-     * @param {(this: AbortSignalLike, ev: any) => any} listener
-     * @memberof AbortSignal
+     * @param _type - Only support "abort" event
+     * @param listener - The listener to be added
      */
     AbortSignal.prototype.addEventListener = function (
     // tslint:disable-next-line:variable-name
@@ -2906,9 +2906,8 @@ var AbortSignal = /** @class */ (function () {
     /**
      * Remove "abort" event listener, only support "abort" event.
      *
-     * @param {"abort"} _type Only support "abort" event
-     * @param {(this: AbortSignalLike, ev: any) => any} listener
-     * @memberof AbortSignal
+     * @param _type - Only support "abort" event
+     * @param listener - The listener to be removed
      */
     AbortSignal.prototype.removeEventListener = function (
     // tslint:disable-next-line:variable-name
@@ -2937,9 +2936,9 @@ var AbortSignal = /** @class */ (function () {
  * - If there is a timeout, the timer will be cancelled.
  * - If aborted is true, nothing will happen.
  *
- * @returns
  * @internal
  */
+// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters
 function abortSignal(signal) {
     if (signal.aborted) {
         return;
@@ -2949,19 +2948,24 @@ function abortSignal(signal) {
     }
     var listeners = listenersMap.get(signal);
     if (listeners) {
-        listeners.forEach(function (listener) {
+        // Create a copy of listeners so mutations to the array
+        // (e.g. via removeListener calls) don't affect the listeners
+        // we invoke.
+        listeners.slice().forEach(function (listener) {
             listener.call(signal, { type: "abort" });
         });
     }
     abortedMap.set(signal, true);
 }
 
+// Copyright (c) Microsoft Corporation.
 /**
  * This error is thrown when an asynchronous operation has been aborted.
  * Check for this error by testing the `name` that the name property of the
  * error matches `"AbortError"`.
  *
  * @example
+ * ```ts
  * const controller = new AbortController();
  * controller.abort();
  * try {
@@ -2971,6 +2975,7 @@ function abortSignal(signal) {
  *     // handle abort error here.
  *   }
  * }
+ * ```
  */
 var AbortError = /** @class */ (function (_super) {
     tslib.__extends(AbortError, _super);
@@ -2986,34 +2991,37 @@ var AbortError = /** @class */ (function (_super) {
  * that an asynchronous operation should be aborted.
  *
  * @example
- * // Abort an operation when another event fires
+ * Abort an operation when another event fires
+ * ```ts
  * const controller = new AbortController();
  * const signal = controller.signal;
  * doAsyncWork(signal);
  * button.addEventListener('click', () => controller.abort());
+ * ```
  *
  * @example
- * // Share aborter cross multiple operations in 30s
+ * Share aborter cross multiple operations in 30s
+ * ```ts
  * // Upload the same data to 2 different data centers at the same time,
  * // abort another when any of them is finished
  * const controller = AbortController.withTimeout(30 * 1000);
  * doAsyncWork(controller.signal).then(controller.abort);
  * doAsyncWork(controller.signal).then(controller.abort);
+ *```
  *
  * @example
- * // Cascaded aborting
+ * Cascaded aborting
+ * ```ts
  * // All operations can't take more than 30 seconds
  * const aborter = Aborter.timeout(30 * 1000);
  *
  * // Following 2 operations can't take more than 25 seconds
  * await doAsyncWork(aborter.withTimeout(25 * 1000));
  * await doAsyncWork(aborter.withTimeout(25 * 1000));
- *
- * @export
- * @class AbortController
- * @implements {AbortSignalLike}
+ * ```
  */
 var AbortController = /** @class */ (function () {
+    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
     function AbortController(parentSignals) {
         var _this = this;
         this._signal = new AbortSignal();
@@ -3022,6 +3030,7 @@ var AbortController = /** @class */ (function () {
         }
         // coerce parentSignals into an array
         if (!Array.isArray(parentSignals)) {
+            // eslint-disable-next-line prefer-rest-params
             parentSignals = arguments;
         }
         for (var _i = 0, parentSignals_1 = parentSignals; _i < parentSignals_1.length; _i++) {
@@ -3045,30 +3054,23 @@ var AbortController = /** @class */ (function () {
          * when the abort method is called on this controller.
          *
          * @readonly
-         * @type {AbortSignal}
-         * @memberof AbortController
          */
         get: function () {
             return this._signal;
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     /**
      * Signal that any operations passed this controller's associated abort signal
      * to cancel any remaining work and throw an `AbortError`.
-     *
-     * @memberof AbortController
      */
     AbortController.prototype.abort = function () {
         abortSignal(this._signal);
     };
     /**
      * Creates a new AbortSignal instance that will abort after the provided ms.
-     *
-     * @static
-     * @params {number} ms Elapsed time in milliseconds to trigger an abort.
-     * @returns {AbortSignal}
+     * @param ms - Elapsed time in milliseconds to trigger an abort.
      */
     AbortController.timeout = function (ms) {
         var signal = new AbortSignal();
@@ -3089,8 +3091,13 @@ exports.AbortSignal = AbortSignal;
 
 
 /***/ }),
-/* 107 */
-/***/ (function(__unusedmodule, exports) {
+/* 107 */,
+/* 108 */,
+/* 109 */,
+/* 110 */,
+/* 111 */,
+/* 112 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
@@ -3110,14 +3117,43 @@ exports.AbortSignal = AbortSignal;
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Observation.js.map
+exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
+var diag_1 = __webpack_require__(118);
+var baggage_impl_1 = __webpack_require__(666);
+var symbol_1 = __webpack_require__(561);
+var diag = diag_1.DiagAPI.instance();
+/**
+ * Create a new Baggage with optional entries
+ *
+ * @param entries An array of baggage entries the new baggage should contain
+ */
+function createBaggage(entries) {
+    if (entries === void 0) { entries = {}; }
+    return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));
+}
+exports.createBaggage = createBaggage;
+/**
+ * Create a serializable BaggageEntryMetadata object from a string.
+ *
+ * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
+ *
+ */
+function baggageEntryMetadataFromString(str) {
+    if (typeof str !== 'string') {
+        diag.error("Cannot create baggage metadata from unknown type: " + typeof str);
+        str = '';
+    }
+    return {
+        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
+        toString: function () {
+            return str;
+        },
+    };
+}
+exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
+//# sourceMappingURL=utils.js.map
 
 /***/ }),
-/* 108 */,
-/* 109 */,
-/* 110 */,
-/* 111 */,
-/* 112 */,
 /* 113 */,
 /* 114 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -3278,7 +3314,7 @@ function uploadChunk(httpClient, resourceUrl, openStream, start, end) {
 function uploadFile(httpClient, cacheId, archivePath, options) {
     return __awaiter(this, void 0, void 0, function* () {
         // Upload Chunks
-        const fileSize = fs.statSync(archivePath).size;
+        const fileSize = utils.getArchiveFileSizeInBytes(archivePath);
         const resourceUrl = getCacheApiUrl(`caches/${cacheId.toString()}`);
         const fd = fs.openSync(archivePath, 'r');
         const uploadOptions = options_1.getUploadOptions(options);
@@ -3328,7 +3364,8 @@ function saveCache(cacheId, archivePath, options) {
         yield uploadFile(httpClient, cacheId, archivePath, options);
         // Commit Cache
         core.debug('Commiting cache');
-        const cacheSize = utils.getArchiveFileSizeIsBytes(archivePath);
+        const cacheSize = utils.getArchiveFileSizeInBytes(archivePath);
+        core.info(`Cache Size: ~${Math.round(cacheSize / (1024 * 1024))} MB (${cacheSize} B)`);
         const commitCacheResponse = yield commitCache(httpClient, cacheId, cacheSize);
         if (!requestUtils_1.isSuccessStatusCode(commitCacheResponse.statusCode)) {
             throw new Error(`Cache service responded with ${commitCacheResponse.statusCode} during commit cache.`);
@@ -3343,30 +3380,7 @@ exports.saveCache = saveCache;
 /* 115 */,
 /* 116 */,
 /* 117 */,
-/* 118 */,
-/* 119 */,
-/* 120 */,
-/* 121 */,
-/* 122 */,
-/* 123 */,
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
-/* 129 */
-/***/ (function(module) {
-
-module.exports = require("child_process");
-
-/***/ }),
-/* 130 */,
-/* 131 */,
-/* 132 */,
-/* 133 */,
-/* 134 */,
-/* 135 */,
-/* 136 */
+/* 118 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
@@ -3387,57 +3401,167 @@ module.exports = require("child_process");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.MetricsAPI = void 0;
-var NoopMeterProvider_1 = __webpack_require__(450);
-var global_utils_1 = __webpack_require__(976);
+exports.DiagAPI = void 0;
+var ComponentLogger_1 = __webpack_require__(362);
+var logLevelLogger_1 = __webpack_require__(673);
+var types_1 = __webpack_require__(545);
+var global_utils_1 = __webpack_require__(525);
+var API_NAME = 'diag';
 /**
- * Singleton object which represents the entry point to the OpenTelemetry Metrics API
+ * Singleton object which represents the entry point to the OpenTelemetry internal
+ * diagnostic API
  */
-var MetricsAPI = /** @class */ (function () {
-    /** Empty private constructor prevents end users from constructing a new instance of the API */
-    function MetricsAPI() {
+var DiagAPI = /** @class */ (function () {
+    /**
+     * Private internal constructor
+     * @private
+     */
+    function DiagAPI() {
+        function _logProxy(funcName) {
+            return function () {
+                var logger = global_utils_1.getGlobal('diag');
+                // shortcut if logger not set
+                if (!logger)
+                    return;
+                return logger[funcName].apply(logger, 
+                // work around Function.prototype.apply types
+                // eslint-disable-next-line @typescript-eslint/no-explicit-any
+                arguments);
+            };
+        }
+        // Using self local variable for minification purposes as 'this' cannot be minified
+        var self = this;
+        // DiagAPI specific functions
+        self.setLogger = function (logger, logLevel) {
+            var _a, _b;
+            if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
+            if (logger === self) {
+                // There isn't much we can do here.
+                // Logging to the console might break the user application.
+                // Try to log to self. If a logger was previously registered it will receive the log.
+                var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
+                self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
+                return false;
+            }
+            var oldLogger = global_utils_1.getGlobal('diag');
+            var newLogger = logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger);
+            // There already is an logger registered. We'll let it know before overwriting it.
+            if (oldLogger) {
+                var stack = (_b = new Error().stack) !== null && _b !== void 0 ? _b : '<failed to generate stacktrace>';
+                oldLogger.warn("Current logger will be overwritten from " + stack);
+                newLogger.warn("Current logger will overwrite one already registered from " + stack);
+            }
+            return global_utils_1.registerGlobal('diag', newLogger, self, true);
+        };
+        self.disable = function () {
+            global_utils_1.unregisterGlobal(API_NAME, self);
+        };
+        self.createComponentLogger = function (options) {
+            return new ComponentLogger_1.DiagComponentLogger(options);
+        };
+        self.verbose = _logProxy('verbose');
+        self.debug = _logProxy('debug');
+        self.info = _logProxy('info');
+        self.warn = _logProxy('warn');
+        self.error = _logProxy('error');
     }
-    /** Get the singleton instance of the Metrics API */
-    MetricsAPI.getInstance = function () {
+    /** Get the singleton instance of the DiagAPI API */
+    DiagAPI.instance = function () {
         if (!this._instance) {
-            this._instance = new MetricsAPI();
+            this._instance = new DiagAPI();
         }
         return this._instance;
     };
-    /**
-     * Set the current global meter. Returns the initialized global meter provider.
-     */
-    MetricsAPI.prototype.setGlobalMeterProvider = function (provider) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY]) {
-            // global meter provider has already been set
-            return this.getMeterProvider();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopMeterProvider_1.NOOP_METER_PROVIDER);
-        return provider;
-    };
-    /**
-     * Returns the global meter provider.
-     */
-    MetricsAPI.prototype.getMeterProvider = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopMeterProvider_1.NOOP_METER_PROVIDER);
-    };
-    /**
-     * Returns a meter from the global meter provider.
-     */
-    MetricsAPI.prototype.getMeter = function (name, version) {
-        return this.getMeterProvider().getMeter(name, version);
-    };
-    /** Remove the global meter provider */
-    MetricsAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY];
-    };
-    return MetricsAPI;
+    return DiagAPI;
 }());
-exports.MetricsAPI = MetricsAPI;
-//# sourceMappingURL=metrics.js.map
+exports.DiagAPI = DiagAPI;
+//# sourceMappingURL=diag.js.map
 
 /***/ }),
+/* 119 */,
+/* 120 */,
+/* 121 */,
+/* 122 */,
+/* 123 */,
+/* 124 */,
+/* 125 */,
+/* 126 */,
+/* 127 */,
+/* 128 */,
+/* 129 */
+/***/ (function(module) {
+
+module.exports = require("child_process");
+
+/***/ }),
+/* 130 */,
+/* 131 */,
+/* 132 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ROOT_CONTEXT = exports.createContextKey = void 0;
+/** Get a key to uniquely identify a context value */
+function createContextKey(description) {
+    // The specification states that for the same input, multiple calls should
+    // return different keys. Due to the nature of the JS dependency management
+    // system, this creates problems where multiple versions of some package
+    // could hold different keys for the same property.
+    //
+    // Therefore, we use Symbol.for which returns the same key for the same input.
+    return Symbol.for(description);
+}
+exports.createContextKey = createContextKey;
+var BaseContext = /** @class */ (function () {
+    /**
+     * Construct a new context which inherits values from an optional parent context.
+     *
+     * @param parentContext a context from which to inherit values
+     */
+    function BaseContext(parentContext) {
+        // for minification
+        var self = this;
+        self._currentContext = parentContext ? new Map(parentContext) : new Map();
+        self.getValue = function (key) { return self._currentContext.get(key); };
+        self.setValue = function (key, value) {
+            var context = new BaseContext(self._currentContext);
+            context._currentContext.set(key, value);
+            return context;
+        };
+        self.deleteValue = function (key) {
+            var context = new BaseContext(self._currentContext);
+            context._currentContext.delete(key);
+            return context;
+        };
+    }
+    return BaseContext;
+}());
+/** The root context is used as the default parent context when there is no active context */
+exports.ROOT_CONTEXT = new BaseContext();
+//# sourceMappingURL=context.js.map
+
+/***/ }),
+/* 133 */,
+/* 134 */,
+/* 135 */,
+/* 136 */,
 /* 137 */,
 /* 138 */,
 /* 139 */
@@ -3728,304 +3852,7 @@ exports.debug = debug; // for test
 /***/ }),
 /* 142 */,
 /* 143 */,
-/* 144 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 144 */,
 /* 145 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -4088,7 +3915,202 @@ exports.fromPromise = function (fn) {
 
 /***/ }),
 /* 148 */,
-/* 149 */,
+/* 149 */
+/***/ (function(module) {
+
+"use strict";
+
+
+var conversions = {};
+module.exports = conversions;
+
+function sign(x) {
+    return x < 0 ? -1 : 1;
+}
+
+function evenRound(x) {
+    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
+    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
+        return Math.floor(x);
+    } else {
+        return Math.round(x);
+    }
+}
+
+function createNumberConversion(bitLength, typeOpts) {
+    if (!typeOpts.unsigned) {
+        --bitLength;
+    }
+    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
+    const upperBound = Math.pow(2, bitLength) - 1;
+
+    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
+    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
+
+    return function(V, opts) {
+        if (!opts) opts = {};
+
+        let x = +V;
+
+        if (opts.enforceRange) {
+            if (!Number.isFinite(x)) {
+                throw new TypeError("Argument is not a finite number");
+            }
+
+            x = sign(x) * Math.floor(Math.abs(x));
+            if (x < lowerBound || x > upperBound) {
+                throw new TypeError("Argument is not in byte range");
+            }
+
+            return x;
+        }
+
+        if (!isNaN(x) && opts.clamp) {
+            x = evenRound(x);
+
+            if (x < lowerBound) x = lowerBound;
+            if (x > upperBound) x = upperBound;
+            return x;
+        }
+
+        if (!Number.isFinite(x) || x === 0) {
+            return 0;
+        }
+
+        x = sign(x) * Math.floor(Math.abs(x));
+        x = x % moduloVal;
+
+        if (!typeOpts.unsigned && x >= moduloBound) {
+            return x - moduloVal;
+        } else if (typeOpts.unsigned) {
+            if (x < 0) {
+              x += moduloVal;
+            } else if (x === -0) { // don't return negative zero
+              return 0;
+            }
+        }
+
+        return x;
+    }
+}
+
+conversions["void"] = function () {
+    return undefined;
+};
+
+conversions["boolean"] = function (val) {
+    return !!val;
+};
+
+conversions["byte"] = createNumberConversion(8, { unsigned: false });
+conversions["octet"] = createNumberConversion(8, { unsigned: true });
+
+conversions["short"] = createNumberConversion(16, { unsigned: false });
+conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
+
+conversions["long"] = createNumberConversion(32, { unsigned: false });
+conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
+
+conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
+conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
+
+conversions["double"] = function (V) {
+    const x = +V;
+
+    if (!Number.isFinite(x)) {
+        throw new TypeError("Argument is not a finite floating-point value");
+    }
+
+    return x;
+};
+
+conversions["unrestricted double"] = function (V) {
+    const x = +V;
+
+    if (isNaN(x)) {
+        throw new TypeError("Argument is NaN");
+    }
+
+    return x;
+};
+
+// not quite valid, but good enough for JS
+conversions["float"] = conversions["double"];
+conversions["unrestricted float"] = conversions["unrestricted double"];
+
+conversions["DOMString"] = function (V, opts) {
+    if (!opts) opts = {};
+
+    if (opts.treatNullAsEmptyString && V === null) {
+        return "";
+    }
+
+    return String(V);
+};
+
+conversions["ByteString"] = function (V, opts) {
+    const x = String(V);
+    let c = undefined;
+    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
+        if (c > 255) {
+            throw new TypeError("Argument is not a valid bytestring");
+        }
+    }
+
+    return x;
+};
+
+conversions["USVString"] = function (V) {
+    const S = String(V);
+    const n = S.length;
+    const U = [];
+    for (let i = 0; i < n; ++i) {
+        const c = S.charCodeAt(i);
+        if (c < 0xD800 || c > 0xDFFF) {
+            U.push(String.fromCodePoint(c));
+        } else if (0xDC00 <= c && c <= 0xDFFF) {
+            U.push(String.fromCodePoint(0xFFFD));
+        } else {
+            if (i === n - 1) {
+                U.push(String.fromCodePoint(0xFFFD));
+            } else {
+                const d = S.charCodeAt(i + 1);
+                if (0xDC00 <= d && d <= 0xDFFF) {
+                    const a = c & 0x3FF;
+                    const b = d & 0x3FF;
+                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
+                    ++i;
+                } else {
+                    U.push(String.fromCodePoint(0xFFFD));
+                }
+            }
+        }
+    }
+
+    return U.join('');
+};
+
+conversions["Date"] = function (V, opts) {
+    if (!(V instanceof Date)) {
+        throw new TypeError("Argument is not a Date object");
+    }
+    if (isNaN(V)) {
+        return undefined;
+    }
+
+    return V;
+};
+
+conversions["RegExp"] = function (V, opts) {
+    if (!(V instanceof RegExp)) {
+        V = new RegExp(V);
+    }
+
+    return V;
+};
+
+
+/***/ }),
 /* 150 */,
 /* 151 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -4111,31 +4133,66 @@ exports.fromPromise = function (fn) {
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER = exports.NoopTracer = void 0;
-var NoopSpan_1 = __webpack_require__(767);
+exports.NoopTracer = void 0;
+var context_1 = __webpack_require__(492);
+var context_utils_1 = __webpack_require__(720);
+var NonRecordingSpan_1 = __webpack_require__(437);
+var spancontext_utils_1 = __webpack_require__(629);
+var context = context_1.ContextAPI.getInstance();
 /**
  * No-op implementations of {@link Tracer}.
  */
 var NoopTracer = /** @class */ (function () {
     function NoopTracer() {
     }
-    NoopTracer.prototype.getCurrentSpan = function () {
-        return NoopSpan_1.NOOP_SPAN;
-    };
     // startSpan starts a noop span.
-    NoopTracer.prototype.startSpan = function (name, options) {
-        return NoopSpan_1.NOOP_SPAN;
+    NoopTracer.prototype.startSpan = function (name, options, context) {
+        var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
+        if (root) {
+            return new NonRecordingSpan_1.NonRecordingSpan();
+        }
+        var parentFromContext = context && context_utils_1.getSpanContext(context);
+        if (isSpanContext(parentFromContext) &&
+            spancontext_utils_1.isSpanContextValid(parentFromContext)) {
+            return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);
+        }
+        else {
+            return new NonRecordingSpan_1.NonRecordingSpan();
+        }
     };
-    NoopTracer.prototype.withSpan = function (span, fn) {
-        return fn();
-    };
-    NoopTracer.prototype.bind = function (target, span) {
-        return target;
+    NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {
+        var opts;
+        var ctx;
+        var fn;
+        if (arguments.length < 2) {
+            return;
+        }
+        else if (arguments.length === 2) {
+            fn = arg2;
+        }
+        else if (arguments.length === 3) {
+            opts = arg2;
+            fn = arg3;
+        }
+        else {
+            opts = arg2;
+            ctx = arg3;
+            fn = arg4;
+        }
+        var parentContext = ctx !== null && ctx !== void 0 ? ctx : context.active();
+        var span = this.startSpan(name, opts, parentContext);
+        var contextWithSpanSet = context_utils_1.setSpan(parentContext, span);
+        return context.with(contextWithSpanSet, fn, undefined, span);
     };
     return NoopTracer;
 }());
 exports.NoopTracer = NoopTracer;
-exports.NOOP_TRACER = new NoopTracer();
+function isSpanContext(spanContext) {
+    return (typeof spanContext === 'object' &&
+        typeof spanContext['spanId'] === 'string' &&
+        typeof spanContext['traceId'] === 'string' &&
+        typeof spanContext['traceFlags'] === 'number');
+}
 //# sourceMappingURL=NoopTracer.js.map
 
 /***/ }),
@@ -4370,7 +4427,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER_PROVIDER = exports.NoopTracerProvider = void 0;
+exports.NoopTracerProvider = void 0;
 var NoopTracer_1 = __webpack_require__(151);
 /**
  * An implementation of the {@link TracerProvider} which returns an impotent
@@ -4382,41 +4439,17 @@ var NoopTracerProvider = /** @class */ (function () {
     function NoopTracerProvider() {
     }
     NoopTracerProvider.prototype.getTracer = function (_name, _version) {
-        return NoopTracer_1.NOOP_TRACER;
+        return new NoopTracer_1.NoopTracer();
     };
     return NoopTracerProvider;
 }());
 exports.NoopTracerProvider = NoopTracerProvider;
-exports.NOOP_TRACER_PROVIDER = new NoopTracerProvider();
 //# sourceMappingURL=NoopTracerProvider.js.map
 
 /***/ }),
 /* 163 */,
 /* 164 */,
-/* 165 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Plugin.js.map
-
-/***/ }),
+/* 165 */,
 /* 166 */,
 /* 167 */,
 /* 168 */,
@@ -4552,30 +4585,7 @@ exports.default = _default;
 /* 186 */,
 /* 187 */,
 /* 188 */,
-/* 189 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=ObserverResult.js.map
-
-/***/ }),
+/* 189 */,
 /* 190 */,
 /* 191 */,
 /* 192 */,
@@ -4675,7 +4685,30 @@ exports.default = _default;
 /* 204 */,
 /* 205 */,
 /* 206 */,
-/* 207 */,
+/* 207 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=trace_state.js.map
+
+/***/ }),
 /* 208 */,
 /* 209 */,
 /* 210 */
@@ -4706,7 +4739,7 @@ module.exports = require("https");
 /* 213 */
 /***/ (function(module) {
 
-module.exports = require("punycode");
+module.exports = require("timers");
 
 /***/ }),
 /* 214 */,
@@ -4825,49 +4858,191 @@ Object.defineProperty(exports, '__esModule', { value: true });
  * A static-key-based credential that supports updating
  * the underlying key value.
  */
-var AzureKeyCredential = /** @class */ (function () {
+class AzureKeyCredential {
     /**
      * Create an instance of an AzureKeyCredential for use
      * with a service client.
      *
-     * @param key the initial value of the key to use in authentication
+     * @param key - The initial value of the key to use in authentication
      */
-    function AzureKeyCredential(key) {
+    constructor(key) {
         if (!key) {
             throw new Error("key must be a non-empty string");
         }
         this._key = key;
     }
-    Object.defineProperty(AzureKeyCredential.prototype, "key", {
-        /**
-         * The value of the key to be used in authentication
-         */
-        get: function () {
-            return this._key;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The value of the key to be used in authentication
+     */
+    get key() {
+        return this._key;
+    }
     /**
      * Change the value of the key.
      *
      * Updates will take effect upon the next request after
      * updating the key value.
      *
-     * @param newKey the new key value to be used
+     * @param newKey - The new key value to be used
      */
-    AzureKeyCredential.prototype.update = function (newKey) {
+    update(newKey) {
         this._key = newKey;
-    };
-    return AzureKeyCredential;
-}());
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if something is defined or not.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+/**
+ * Helper TypeGuard that checks if the input is an object with the specified properties.
+ * Note: The properties may be inherited.
+ * @param thing - Anything.
+ * @param properties - The name of the properties that should appear in the object.
+ * @internal
+ */
+function isObjectWithProperties(thing, properties) {
+    if (!isDefined(thing) || typeof thing !== "object") {
+        return false;
+    }
+    for (const property of properties) {
+        if (!objectHasProperty(thing, property)) {
+            return false;
+        }
+    }
+    return true;
+}
+/**
+ * Helper TypeGuard that checks if the input is an object with the specified property.
+ * Note: The property may be inherited.
+ * @param thing - Any object.
+ * @param property - The name of the property that should appear in the object.
+ * @internal
+ */
+function objectHasProperty(thing, property) {
+    return typeof thing === "object" && property in thing;
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A static name/key-based credential that supports updating
+ * the underlying name and key values.
+ */
+class AzureNamedKeyCredential {
+    /**
+     * Create an instance of an AzureNamedKeyCredential for use
+     * with a service client.
+     *
+     * @param name - The initial value of the name to use in authentication.
+     * @param key - The initial value of the key to use in authentication.
+     */
+    constructor(name, key) {
+        if (!name || !key) {
+            throw new TypeError("name and key must be non-empty strings");
+        }
+        this._name = name;
+        this._key = key;
+    }
+    /**
+     * The value of the key to be used in authentication.
+     */
+    get key() {
+        return this._key;
+    }
+    /**
+     * The value of the name to be used in authentication.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * Change the value of the key.
+     *
+     * Updates will take effect upon the next request after
+     * updating the key value.
+     *
+     * @param newName - The new name value to be used.
+     * @param newKey - The new key value to be used.
+     */
+    update(newName, newKey) {
+        if (!newName || !newKey) {
+            throw new TypeError("newName and newKey must be non-empty strings");
+        }
+        this._name = newName;
+        this._key = newKey;
+    }
+}
+/**
+ * Tests an object to determine whether it implements NamedKeyCredential.
+ *
+ * @param credential - The assumed NamedKeyCredential to be tested.
+ */
+function isNamedKeyCredential(credential) {
+    return (isObjectWithProperties(credential, ["name", "key"]) &&
+        typeof credential.key === "string" &&
+        typeof credential.name === "string");
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A static-signature-based credential that supports updating
+ * the underlying signature value.
+ */
+class AzureSASCredential {
+    /**
+     * Create an instance of an AzureSASCredential for use
+     * with a service client.
+     *
+     * @param signature - The initial value of the shared access signature to use in authentication
+     */
+    constructor(signature) {
+        if (!signature) {
+            throw new Error("shared access signature must be a non-empty string");
+        }
+        this._signature = signature;
+    }
+    /**
+     * The value of the shared access signature to be used in authentication
+     */
+    get signature() {
+        return this._signature;
+    }
+    /**
+     * Change the value of the signature.
+     *
+     * Updates will take effect upon the next request after
+     * updating the signature value.
+     *
+     * @param newSignature - The new shared access signature value to be used
+     */
+    update(newSignature) {
+        if (!newSignature) {
+            throw new Error("shared access signature must be a non-empty string");
+        }
+        this._signature = newSignature;
+    }
+}
+/**
+ * Tests an object to determine whether it implements SASCredential.
+ *
+ * @param credential - The assumed SASCredential to be tested.
+ */
+function isSASCredential(credential) {
+    return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string");
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Tests an object to determine whether it implements TokenCredential.
  *
- * @param credential The assumed TokenCredential to be tested.
+ * @param credential - The assumed TokenCredential to be tested.
  */
 function isTokenCredential(credential) {
     // Check for an object with a 'getToken' function and possibly with
@@ -4875,20 +5050,31 @@ function isTokenCredential(credential) {
     // a ServiceClientCredentials implementor (like TokenClientCredentials
     // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if
     // it doesn't actually implement TokenCredential also.
-    return (credential &&
-        typeof credential.getToken === "function" &&
-        (credential.signRequest === undefined || credential.getToken.length > 0));
+    const castCredential = credential;
+    return (castCredential &&
+        typeof castCredential.getToken === "function" &&
+        (castCredential.signRequest === undefined || castCredential.getToken.length > 0));
 }
 
 exports.AzureKeyCredential = AzureKeyCredential;
+exports.AzureNamedKeyCredential = AzureNamedKeyCredential;
+exports.AzureSASCredential = AzureSASCredential;
+exports.isNamedKeyCredential = isNamedKeyCredential;
+exports.isSASCredential = isSASCredential;
 exports.isTokenCredential = isTokenCredential;
 //# sourceMappingURL=index.js.map
 
 
 /***/ }),
 /* 230 */,
-/* 231 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/* 231 */,
+/* 232 */,
+/* 233 */,
+/* 234 */,
+/* 235 */,
+/* 236 */,
+/* 237 */
+/***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
@@ -4907,29 +5093,49 @@ exports.isTokenCredential = isTokenCredential;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
-};
 Object.defineProperty(exports, "__esModule", { value: true });
-__exportStar(__webpack_require__(328), exports);
-__exportStar(__webpack_require__(715), exports);
-__exportStar(__webpack_require__(924), exports);
-//# sourceMappingURL=index.js.map
+exports.DiagConsoleLogger = void 0;
+var consoleMap = [
+    { n: 'error', c: 'error' },
+    { n: 'warn', c: 'warn' },
+    { n: 'info', c: 'info' },
+    { n: 'debug', c: 'debug' },
+    { n: 'verbose', c: 'trace' },
+];
+/**
+ * A simple Immutable Console based diagnostic logger which will output any messages to the Console.
+ * If you want to limit the amount of logging to a specific level or lower use the
+ * {@link createLogLevelDiagLogger}
+ */
+var DiagConsoleLogger = /** @class */ (function () {
+    function DiagConsoleLogger() {
+        function _consoleFunc(funcName) {
+            return function () {
+                var orgArguments = arguments;
+                if (console) {
+                    // Some environments only expose the console when the F12 developer console is open
+                    var theFunc = console[funcName];
+                    if (typeof theFunc !== 'function') {
+                        // Not all environments support all functions
+                        theFunc = console.log;
+                    }
+                    // One last final check
+                    if (typeof theFunc === 'function') {
+                        return theFunc.apply(console, orgArguments);
+                    }
+                }
+            };
+        }
+        for (var i = 0; i < consoleMap.length; i++) {
+            this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);
+        }
+    }
+    return DiagConsoleLogger;
+}());
+exports.DiagConsoleLogger = DiagConsoleLogger;
+//# sourceMappingURL=consoleLogger.js.map
 
 /***/ }),
-/* 232 */,
-/* 233 */,
-/* 234 */,
-/* 235 */,
-/* 236 */,
-/* 237 */,
 /* 238 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -5233,7 +5439,7 @@ function downloadCacheHttpClient(archiveLocation, archivePath) {
         const contentLengthHeader = downloadResponse.message.headers['content-length'];
         if (contentLengthHeader) {
             const expectedLength = parseInt(contentLengthHeader);
-            const actualLength = utils.getArchiveFileSizeIsBytes(archivePath);
+            const actualLength = utils.getArchiveFileSizeInBytes(archivePath);
             if (actualLength !== expectedLength) {
                 throw new Error(`Incomplete download. Expected file size: ${expectedLength}, actual file size: ${actualLength}`);
             }
@@ -5307,7 +5513,213 @@ exports.downloadCacheStorageSDK = downloadCacheStorageSDK;
 /* 253 */,
 /* 254 */,
 /* 255 */,
-/* 256 */,
+/* 256 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+const usm = __webpack_require__(936);
+
+exports.implementation = class URLImpl {
+  constructor(constructorArgs) {
+    const url = constructorArgs[0];
+    const base = constructorArgs[1];
+
+    let parsedBase = null;
+    if (base !== undefined) {
+      parsedBase = usm.basicURLParse(base);
+      if (parsedBase === "failure") {
+        throw new TypeError("Invalid base URL");
+      }
+    }
+
+    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
+    }
+
+    this._url = parsedURL;
+
+    // TODO: query stuff
+  }
+
+  get href() {
+    return usm.serializeURL(this._url);
+  }
+
+  set href(v) {
+    const parsedURL = usm.basicURLParse(v);
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
+    }
+
+    this._url = parsedURL;
+  }
+
+  get origin() {
+    return usm.serializeURLOrigin(this._url);
+  }
+
+  get protocol() {
+    return this._url.scheme + ":";
+  }
+
+  set protocol(v) {
+    usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
+  }
+
+  get username() {
+    return this._url.username;
+  }
+
+  set username(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    usm.setTheUsername(this._url, v);
+  }
+
+  get password() {
+    return this._url.password;
+  }
+
+  set password(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    usm.setThePassword(this._url, v);
+  }
+
+  get host() {
+    const url = this._url;
+
+    if (url.host === null) {
+      return "";
+    }
+
+    if (url.port === null) {
+      return usm.serializeHost(url.host);
+    }
+
+    return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
+  }
+
+  set host(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
+  }
+
+  get hostname() {
+    if (this._url.host === null) {
+      return "";
+    }
+
+    return usm.serializeHost(this._url.host);
+  }
+
+  set hostname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
+  }
+
+  get port() {
+    if (this._url.port === null) {
+      return "";
+    }
+
+    return usm.serializeInteger(this._url.port);
+  }
+
+  set port(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    if (v === "") {
+      this._url.port = null;
+    } else {
+      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
+    }
+  }
+
+  get pathname() {
+    if (this._url.cannotBeABaseURL) {
+      return this._url.path[0];
+    }
+
+    if (this._url.path.length === 0) {
+      return "";
+    }
+
+    return "/" + this._url.path.join("/");
+  }
+
+  set pathname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    this._url.path = [];
+    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
+  }
+
+  get search() {
+    if (this._url.query === null || this._url.query === "") {
+      return "";
+    }
+
+    return "?" + this._url.query;
+  }
+
+  set search(v) {
+    // TODO: query stuff
+
+    const url = this._url;
+
+    if (v === "") {
+      url.query = null;
+      return;
+    }
+
+    const input = v[0] === "?" ? v.substring(1) : v;
+    url.query = "";
+    usm.basicURLParse(input, { url, stateOverride: "query" });
+  }
+
+  get hash() {
+    if (this._url.fragment === null || this._url.fragment === "") {
+      return "";
+    }
+
+    return "#" + this._url.fragment;
+  }
+
+  set hash(v) {
+    if (v === "") {
+      this._url.fragment = null;
+      return;
+    }
+
+    const input = v[0] === "#" ? v.substring(1) : v;
+    this._url.fragment = "";
+    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
+  }
+
+  toJSON() {
+    return this.href;
+  }
+};
+
+
+/***/ }),
 /* 257 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -6113,622 +6525,193 @@ exports.downloadCacheStorageSDK = downloadCacheStorageSDK;
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var api = __webpack_require__(440);
-var tslib = __webpack_require__(144);
 
 // Copyright (c) Microsoft Corporation.
+(function (SpanKind) {
+    /** Default value. Indicates that the span is used internally. */
+    SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL";
+    /**
+     * Indicates that the span covers server-side handling of an RPC or other
+     * remote request.
+     */
+    SpanKind[SpanKind["SERVER"] = 1] = "SERVER";
+    /**
+     * Indicates that the span covers the client-side wrapper around an RPC or
+     * other remote request.
+     */
+    SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT";
+    /**
+     * Indicates that the span describes producer sending a message to a
+     * broker. Unlike client and server, there is no direct critical path latency
+     * relationship between producer and consumer spans.
+     */
+    SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER";
+    /**
+     * Indicates that the span describes consumer receiving a message from a
+     * broker. Unlike client and server, there is no direct critical path latency
+     * relationship between producer and consumer spans.
+     */
+    SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER";
+})(exports.SpanKind || (exports.SpanKind = {}));
 /**
- * A no-op implementation of Span that can safely be used without side-effects.
+ * Return the span if one exists
+ *
+ * @param context - context to get span from
  */
-var NoOpSpan = /** @class */ (function () {
-    function NoOpSpan() {
-    }
+function getSpan(context) {
+    return api.trace.getSpan(context);
+}
+/**
+ * Set the span on a context
+ *
+ * @param context - context to use as parent
+ * @param span - span to set active
+ */
+function setSpan(context, span) {
+    return api.trace.setSpan(context, span);
+}
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context - context to set active span on
+ * @param spanContext - span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return api.trace.setSpanContext(context, spanContext);
+}
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context - context to get values from
+ */
+function getSpanContext(context) {
+    return api.trace.getSpanContext(context);
+}
+/**
+ * Returns true of the given {@link SpanContext} is valid.
+ * A valid {@link SpanContext} is one which has a valid trace ID and span ID as per the spec.
+ *
+ * @param context - the {@link SpanContext} to validate.
+ *
+ * @returns true if the {@link SpanContext} is valid, false otherwise.
+ */
+function isSpanContextValid(context) {
+    return api.trace.isSpanContextValid(context);
+}
+function getTracer(name, version) {
+    return api.trace.getTracer(name || "azure/core-tracing", version);
+}
+/** Entrypoint for context API */
+const context = api.context;
+(function (SpanStatusCode) {
     /**
-     * Returns the SpanContext associated with this Span.
+     * The default status.
      */
-    NoOpSpan.prototype.context = function () {
-        return {
-            spanId: "",
-            traceId: "",
-            traceFlags: api.TraceFlags.NONE
-        };
-    };
+    SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
     /**
-     * Marks the end of Span execution.
-     * @param _endTime The time to use as the Span's end time. Defaults to
-     * the current time.
+     * The operation has been validated by an Application developer or
+     * Operator to have completed successfully.
      */
-    NoOpSpan.prototype.end = function (_endTime) {
-        /* Noop */
-    };
+    SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
     /**
-     * Sets an attribute on the Span
-     * @param _key the attribute key
-     * @param _value the attribute value
+     * The operation contains an error.
      */
-    NoOpSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param _attributes the attributes to add
-     */
-    NoOpSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param _name The name of the event
-     * @param _attributes The associated attributes to add for this event
-     */
-    NoOpSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param _status The status to set.
-     */
-    NoOpSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param _name the new Span name
-     */
-    NoOpSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    NoOpSpan.prototype.isRecording = function () {
+    SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
+})(exports.SpanStatusCode || (exports.SpanStatusCode = {}));
+
+// Copyright (c) Microsoft Corporation.
+function isTracingDisabled() {
+    var _a;
+    if (typeof process === "undefined") {
+        // not supported in browser for now without polyfills
         return false;
-    };
-    return NoOpSpan;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A no-op implementation of Tracer that can be used when tracing
- * is disabled.
- */
-var NoOpTracer = /** @class */ (function () {
-    function NoOpTracer() {
     }
-    /**
-     * Starts a new Span.
-     * @param _name The name of the span.
-     * @param _options The SpanOptions used during Span creation.
-     */
-    NoOpTracer.prototype.startSpan = function (_name, _options) {
-        return new NoOpSpan();
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    NoOpTracer.prototype.getCurrentSpan = function () {
-        return new NoOpSpan();
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span The span that provides the context.
-     * @param fn The function to be executed.
-     */
-    NoOpTracer.prototype.withSpan = function (_span, fn) {
-        return fn();
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target An object to bind the scope.
-     * @param _span A specific Span to use. Otherwise, use the current one.
-     */
-    NoOpTracer.prototype.bind = function (target, _span) {
-        return target;
-    };
-    return NoOpTracer;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function getGlobalObject() {
-    return global;
+    const azureTracingDisabledValue = (_a = process.env.AZURE_TRACING_DISABLED) === null || _a === void 0 ? void 0 : _a.toLowerCase();
+    if (azureTracingDisabledValue === "false" || azureTracingDisabledValue === "0") {
+        return false;
+    }
+    return Boolean(azureTracingDisabledValue);
 }
-
-// Copyright (c) Microsoft Corporation.
-// V1 = OpenTelemetry 0.1
-// V2 = OpenTelemetry 0.2
-// V3 = OpenTelemetry 0.6.1
-var GLOBAL_TRACER_VERSION = 3;
-// preview5 shipped with @azure/core-tracing.tracerCache
-// and didn't have smart detection for collisions
-var GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache2");
-var cache;
-function loadTracerCache() {
-    var globalObj = getGlobalObject();
-    var existingCache = globalObj[GLOBAL_TRACER_SYMBOL];
-    var setGlobalCache = true;
-    if (existingCache) {
-        if (existingCache.version === GLOBAL_TRACER_VERSION) {
-            cache = existingCache;
+/**
+ * Creates a function that can be used to create spans using the global tracer.
+ *
+ * Usage:
+ *
+ * ```typescript
+ * // once
+ * const createSpan = createSpanFunction({ packagePrefix: "Azure.Data.AppConfiguration", namespace: "Microsoft.AppConfiguration" });
+ *
+ * // in each operation
+ * const span = createSpan("deleteConfigurationSetting", operationOptions);
+ *    // code...
+ * span.end();
+ * ```
+ *
+ * @hidden
+ * @param args - allows configuration of the prefix for each span as well as the az.namespace field.
+ */
+function createSpanFunction(args) {
+    return function (operationName, operationOptions) {
+        const tracer = getTracer();
+        const tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
+        const spanOptions = Object.assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
+        const spanName = args.packagePrefix ? `${args.packagePrefix}.${operationName}` : operationName;
+        let span;
+        if (isTracingDisabled()) {
+            span = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);
         }
         else {
-            setGlobalCache = false;
-            if (existingCache.tracer) {
-                throw new Error("Two incompatible versions of @azure/core-tracing have been loaded.\n          This library is " + GLOBAL_TRACER_VERSION + ", existing is " + existingCache.version + ".");
-            }
+            span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
         }
-    }
-    if (!cache) {
-        cache = {
-            tracer: undefined,
-            version: GLOBAL_TRACER_VERSION
-        };
-    }
-    if (setGlobalCache) {
-        globalObj[GLOBAL_TRACER_SYMBOL] = cache;
-    }
-}
-function getCache() {
-    if (!cache) {
-        loadTracerCache();
-    }
-    return cache;
-}
-
-// Copyright (c) Microsoft Corporation.
-var defaultTracer;
-function getDefaultTracer() {
-    if (!defaultTracer) {
-        defaultTracer = new NoOpTracer();
-    }
-    return defaultTracer;
-}
-/**
- * Sets the global tracer, enabling tracing for the Azure SDK.
- * @param tracer An OpenTelemetry Tracer instance.
- */
-function setTracer(tracer) {
-    var cache = getCache();
-    cache.tracer = tracer;
-}
-/**
- * Retrieves the active tracer, or returns a
- * no-op implementation if one is not set.
- */
-function getTracer() {
-    var cache = getCache();
-    if (!cache.tracer) {
-        return getDefaultTracer();
-    }
-    return cache.tracer;
-}
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * @ignore
- * @internal
- */
-var OpenCensusTraceStateWrapper = /** @class */ (function () {
-    function OpenCensusTraceStateWrapper(state) {
-        this._state = state;
-    }
-    OpenCensusTraceStateWrapper.prototype.get = function (_key) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.set = function (_key, _value) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.unset = function (_key) {
-        throw new Error("Method not implemented");
-    };
-    OpenCensusTraceStateWrapper.prototype.serialize = function () {
-        return this._state || "";
-    };
-    return OpenCensusTraceStateWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-function isWrappedSpan(span) {
-    return !!span && span.getWrappedSpan !== undefined;
-}
-function isTracer(tracerOrSpan) {
-    return tracerOrSpan.getWrappedTracer !== undefined;
-}
-/**
- * An implementation of OpenTelemetry Span that wraps an OpenCensus Span.
- */
-var OpenCensusSpanWrapper = /** @class */ (function () {
-    function OpenCensusSpanWrapper(tracerOrSpan, name, options) {
-        if (name === void 0) { name = ""; }
-        if (options === void 0) { options = {}; }
-        if (isTracer(tracerOrSpan)) {
-            var parent = isWrappedSpan(options.parent) ? options.parent.getWrappedSpan() : undefined;
-            this._span = tracerOrSpan.getWrappedTracer().startChildSpan({
-                name: name,
-                childOf: parent
-            });
-            this._span.start();
-            if (options.links) {
-                for (var _i = 0, _a = options.links; _i < _a.length; _i++) {
-                    var link = _a[_i];
-                    // Since there is no way to set the link relationship, leave it as Unspecified.
-                    this._span.addLink(link.context.traceId, link.context.spanId, 0 /* LinkType.UNSPECIFIED */, link.attributes);
-                }
-            }
+        if (args.namespace) {
+            span.setAttribute("az.namespace", args.namespace);
         }
-        else {
-            this._span = tracerOrSpan;
+        let newSpanOptions = tracingOptions.spanOptions || {};
+        if (span.isRecording() && args.namespace) {
+            newSpanOptions = Object.assign(Object.assign({}, tracingOptions.spanOptions), { attributes: Object.assign(Object.assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
         }
-    }
-    /**
-     * The underlying OpenCensus Span
-     */
-    OpenCensusSpanWrapper.prototype.getWrappedSpan = function () {
-        return this._span;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param endTime The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    OpenCensusSpanWrapper.prototype.end = function (_endTime) {
-        this._span.end();
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    OpenCensusSpanWrapper.prototype.context = function () {
-        var openCensusSpanContext = this._span.spanContext;
+        const newTracingOptions = Object.assign(Object.assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
+        const newOperationOptions = Object.assign(Object.assign({}, operationOptions), { tracingOptions: newTracingOptions });
         return {
-            spanId: openCensusSpanContext.spanId,
-            traceId: openCensusSpanContext.traceId,
-            traceFlags: openCensusSpanContext.options,
-            traceState: new OpenCensusTraceStateWrapper(openCensusSpanContext.traceState)
+            span,
+            updatedOptions: newOperationOptions
         };
     };
-    /**
-     * Sets an attribute on the Span
-     * @param key the attribute key
-     * @param value the attribute value
-     */
-    OpenCensusSpanWrapper.prototype.setAttribute = function (key, value) {
-        this._span.addAttribute(key, value);
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes the attributes to add
-     */
-    OpenCensusSpanWrapper.prototype.setAttributes = function (attributes) {
-        this._span.attributes = attributes;
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param name The name of the event
-     * @param attributes The associated attributes to add for this event
-     */
-    OpenCensusSpanWrapper.prototype.addEvent = function (_name, _attributes) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param status The status to set.
-     */
-    OpenCensusSpanWrapper.prototype.setStatus = function (status) {
-        this._span.setStatus(status.code, status.message);
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param name the new Span name
-     */
-    OpenCensusSpanWrapper.prototype.updateName = function (name) {
-        this._span.name = name;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    OpenCensusSpanWrapper.prototype.isRecording = function () {
-        // NoRecordSpans have an empty traceId
-        return !!this._span.traceId;
-    };
-    return OpenCensusSpanWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * An implementation of OpenTelemetry Tracer that wraps an OpenCensus Tracer.
- */
-var OpenCensusTracerWrapper = /** @class */ (function () {
-    /**
-     * Create a new wrapper around a given OpenCensus Tracer.
-     * @param tracer The OpenCensus Tracer to wrap.
-     */
-    function OpenCensusTracerWrapper(tracer) {
-        this._tracer = tracer;
-    }
-    /**
-     * The wrapped OpenCensus Tracer
-     */
-    OpenCensusTracerWrapper.prototype.getWrappedTracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Starts a new Span.
-     * @param name The name of the span.
-     * @param options The SpanOptions used during Span creation.
-     */
-    OpenCensusTracerWrapper.prototype.startSpan = function (name, options) {
-        return new OpenCensusSpanWrapper(this, name, options);
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    OpenCensusTracerWrapper.prototype.getCurrentSpan = function () {
-        return undefined;
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span The span that provides the context.
-     * @param _fn The function to be executed.
-     */
-    OpenCensusTracerWrapper.prototype.withSpan = function (_span, _fn) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target An object to bind the scope.
-     * @param _span A specific Span to use. Otherwise, use the current one.
-     */
-    OpenCensusTracerWrapper.prototype.bind = function (_target, _span) {
-        throw new Error("Method not implemented.");
-    };
-    return OpenCensusTracerWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock span useful for testing.
- */
-var TestSpan = /** @class */ (function (_super) {
-    tslib.__extends(TestSpan, _super);
-    /**
-     * Starts a new Span.
-     * @param parentTracer The tracer that created this Span
-     * @param name The name of the span.
-     * @param context The SpanContext this span belongs to
-     * @param kind The SpanKind of this Span
-     * @param parentSpanId The identifier of the parent Span
-     * @param startTime The startTime of the event (defaults to now)
-     */
-    function TestSpan(parentTracer, name, context, kind, parentSpanId, startTime) {
-        if (startTime === void 0) { startTime = Date.now(); }
-        var _this = _super.call(this) || this;
-        _this._tracer = parentTracer;
-        _this.name = name;
-        _this.kind = kind;
-        _this.startTime = startTime;
-        _this.parentSpanId = parentSpanId;
-        _this.status = {
-            code: api.CanonicalCode.OK
-        };
-        _this.endCalled = false;
-        _this._context = context;
-        _this.attributes = {};
-        return _this;
-    }
-    /**
-     * Returns the Tracer that created this Span
-     */
-    TestSpan.prototype.tracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    TestSpan.prototype.context = function () {
-        return this._context;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    TestSpan.prototype.end = function (_endTime) {
-        this.endCalled = true;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param status The status to set.
-     */
-    TestSpan.prototype.setStatus = function (status) {
-        this.status = status;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    TestSpan.prototype.isRecording = function () {
-        return true;
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key the attribute key
-     * @param value the attribute value
-     */
-    TestSpan.prototype.setAttribute = function (key, value) {
-        this.attributes[key] = value;
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes the attributes to add
-     */
-    TestSpan.prototype.setAttributes = function (attributes) {
-        for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {
-            var key = _a[_i];
-            this.attributes[key] = attributes[key];
-        }
-        return this;
-    };
-    return TestSpan;
-}(NoOpSpan));
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock tracer useful for testing
- */
-var TestTracer = /** @class */ (function (_super) {
-    tslib.__extends(TestTracer, _super);
-    function TestTracer() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.traceIdCounter = 0;
-        _this.spanIdCounter = 0;
-        _this.rootSpans = [];
-        _this.knownSpans = [];
-        return _this;
-    }
-    TestTracer.prototype.getNextTraceId = function () {
-        this.traceIdCounter++;
-        return String(this.traceIdCounter);
-    };
-    TestTracer.prototype.getNextSpanId = function () {
-        this.spanIdCounter++;
-        return String(this.spanIdCounter);
-    };
-    /**
-     * Returns all Spans that were created without a parent
-     */
-    TestTracer.prototype.getRootSpans = function () {
-        return this.rootSpans;
-    };
-    /**
-     * Returns all Spans this Tracer knows about
-     */
-    TestTracer.prototype.getKnownSpans = function () {
-        return this.knownSpans;
-    };
-    /**
-     * Returns all Spans where end() has not been called
-     */
-    TestTracer.prototype.getActiveSpans = function () {
-        return this.knownSpans.filter(function (span) {
-            return !span.endCalled;
-        });
-    };
-    /**
-     * Return all Spans for a particular trace, grouped by their
-     * parent Span in a tree-like structure
-     * @param traceId The traceId to return the graph for
-     */
-    TestTracer.prototype.getSpanGraph = function (traceId) {
-        var traceSpans = this.knownSpans.filter(function (span) {
-            return span.context().traceId === traceId;
-        });
-        var roots = [];
-        var nodeMap = new Map();
-        for (var _i = 0, traceSpans_1 = traceSpans; _i < traceSpans_1.length; _i++) {
-            var span = traceSpans_1[_i];
-            var spanId = span.context().spanId;
-            var node = {
-                name: span.name,
-                children: []
-            };
-            nodeMap.set(spanId, node);
-            if (span.parentSpanId) {
-                var parent = nodeMap.get(span.parentSpanId);
-                if (!parent) {
-                    throw new Error("Span with name " + node.name + " has an unknown parentSpan with id " + span.parentSpanId);
-                }
-                parent.children.push(node);
-            }
-            else {
-                roots.push(node);
-            }
-        }
-        return {
-            roots: roots
-        };
-    };
-    /**
-     * Starts a new Span.
-     * @param name The name of the span.
-     * @param options The SpanOptions used during Span creation.
-     */
-    TestTracer.prototype.startSpan = function (name, options) {
-        if (options === void 0) { options = {}; }
-        var parentContext = this._getParentContext(options);
-        var traceId;
-        var isRootSpan = false;
-        if (parentContext && parentContext.traceId) {
-            traceId = parentContext.traceId;
-        }
-        else {
-            traceId = this.getNextTraceId();
-            isRootSpan = true;
-        }
-        var context = {
-            traceId: traceId,
-            spanId: this.getNextSpanId(),
-            traceFlags: api.TraceFlags.NONE
-        };
-        var span = new TestSpan(this, name, context, options.kind || api.SpanKind.INTERNAL, parentContext ? parentContext.spanId : undefined, options.startTime);
-        this.knownSpans.push(span);
-        if (isRootSpan) {
-            this.rootSpans.push(span);
-        }
-        return span;
-    };
-    TestTracer.prototype._getParentContext = function (options) {
-        var parent = options.parent;
-        var result;
-        if (parent) {
-            if ("traceId" in parent) {
-                result = parent;
-            }
-            else {
-                result = parent.context();
-            }
-        }
-        return result;
-    };
-    return TestTracer;
-}(NoOpTracer));
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var VERSION = "00";
+const VERSION = "00";
 /**
  * Generates a `SpanContext` given a `traceparent` header value.
- * @param traceParent Serialized span context data as a `traceparent` header value.
+ * @param traceParent - Serialized span context data as a `traceparent` header value.
  * @returns The `SpanContext` generated from the `traceparent` value.
  */
 function extractSpanContextFromTraceParentHeader(traceParentHeader) {
-    var parts = traceParentHeader.split("-");
+    const parts = traceParentHeader.split("-");
     if (parts.length !== 4) {
         return;
     }
-    var version = parts[0], traceId = parts[1], spanId = parts[2], traceOptions = parts[3];
+    const [version, traceId, spanId, traceOptions] = parts;
     if (version !== VERSION) {
         return;
     }
-    var traceFlags = parseInt(traceOptions, 16);
-    var spanContext = {
-        spanId: spanId,
-        traceId: traceId,
-        traceFlags: traceFlags
+    const traceFlags = parseInt(traceOptions, 16);
+    const spanContext = {
+        spanId,
+        traceId,
+        traceFlags
     };
     return spanContext;
 }
 /**
  * Generates a `traceparent` value given a span context.
- * @param spanContext Contains context for a specific span.
+ * @param spanContext - Contains context for a specific span.
  * @returns The `spanContext` represented as a `traceparent` value.
  */
 function getTraceParentHeader(spanContext) {
-    var missingFields = [];
+    const missingFields = [];
     if (!spanContext.traceId) {
         missingFields.push("traceId");
     }
@@ -6738,23 +6721,23 @@ function getTraceParentHeader(spanContext) {
     if (missingFields.length) {
         return;
     }
-    var flags = spanContext.traceFlags || 0 /* NONE */;
-    var hexFlags = flags.toString(16);
-    var traceFlags = hexFlags.length === 1 ? "0" + hexFlags : hexFlags;
+    const flags = spanContext.traceFlags || 0 /* NONE */;
+    const hexFlags = flags.toString(16);
+    const traceFlags = hexFlags.length === 1 ? `0${hexFlags}` : hexFlags;
     // https://www.w3.org/TR/trace-context/#traceparent-header-field-values
-    return VERSION + "-" + spanContext.traceId + "-" + spanContext.spanId + "-" + traceFlags;
+    return `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-${traceFlags}`;
 }
 
-exports.NoOpSpan = NoOpSpan;
-exports.NoOpTracer = NoOpTracer;
-exports.OpenCensusSpanWrapper = OpenCensusSpanWrapper;
-exports.OpenCensusTracerWrapper = OpenCensusTracerWrapper;
-exports.TestSpan = TestSpan;
-exports.TestTracer = TestTracer;
+exports.context = context;
+exports.createSpanFunction = createSpanFunction;
 exports.extractSpanContextFromTraceParentHeader = extractSpanContextFromTraceParentHeader;
+exports.getSpan = getSpan;
+exports.getSpanContext = getSpanContext;
 exports.getTraceParentHeader = getTraceParentHeader;
 exports.getTracer = getTracer;
-exports.setTracer = setTracer;
+exports.isSpanContextValid = isSpanContextValid;
+exports.setSpan = setSpan;
+exports.setSpanContext = setSpanContext;
 //# sourceMappingURL=index.js.map
 
 
@@ -6804,55 +6787,9 @@ exports.setTracer = setTracer;
 /* 273 */,
 /* 274 */,
 /* 275 */,
-/* 276 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Logger.js.map
-
-/***/ }),
+/* 276 */,
 /* 277 */,
-/* 278 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=CorrelationContext.js.map
-
-/***/ }),
+/* 278 */,
 /* 279 */,
 /* 280 */
 /***/ (function(module, exports) {
@@ -8471,6 +8408,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.create = void 0;
 const internal_globber_1 = __webpack_require__(297);
 /**
  * Constructs a globber
@@ -8512,6 +8450,25 @@ module.exports = require("buffer");
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -8541,11 +8498,12 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
     function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-const core = __webpack_require__(470);
-const fs = __webpack_require__(747);
-const globOptionsHelper = __webpack_require__(601);
-const path = __webpack_require__(622);
-const patternHelper = __webpack_require__(597);
+exports.DefaultGlobber = void 0;
+const core = __importStar(__webpack_require__(470));
+const fs = __importStar(__webpack_require__(747));
+const globOptionsHelper = __importStar(__webpack_require__(601));
+const path = __importStar(__webpack_require__(622));
+const patternHelper = __importStar(__webpack_require__(597));
 const internal_match_kind_1 = __webpack_require__(327);
 const internal_pattern_1 = __webpack_require__(923);
 const internal_search_state_1 = __webpack_require__(728);
@@ -8591,7 +8549,7 @@ class DefaultGlobber {
                 if (options.implicitDescendants &&
                     (pattern.trailingSeparator ||
                         pattern.segments[pattern.segments.length - 1] !== '**')) {
-                    patterns.push(new internal_pattern_1.Pattern(pattern.negate, pattern.segments.concat('**')));
+                    patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat('**')));
                 }
             }
             // Push the search paths
@@ -9050,30 +9008,7 @@ function expand(str, isTop) {
 /* 315 */,
 /* 316 */,
 /* 317 */,
-/* 318 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=BatchObserverResult.js.map
-
-/***/ }),
+/* 318 */,
 /* 319 */,
 /* 320 */,
 /* 321 */,
@@ -9088,6 +9023,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.MatchKind = void 0;
 /**
  * Indicates whether a pattern matches a path
  */
@@ -9105,30 +9041,7 @@ var MatchKind;
 //# sourceMappingURL=internal-match-kind.js.map
 
 /***/ }),
-/* 328 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=types.js.map
-
-/***/ }),
+/* 328 */,
 /* 329 */,
 /* 330 */,
 /* 331 */,
@@ -9478,12 +9391,7 @@ var SamplingDecision;
 /***/ }),
 /* 341 */,
 /* 342 */,
-/* 343 */
-/***/ (function(module) {
-
-module.exports = require("timers");
-
-/***/ }),
+/* 343 */,
 /* 344 */,
 /* 345 */,
 /* 346 */,
@@ -9653,7 +9561,92 @@ module.exports = require("assert");
 /* 359 */,
 /* 360 */,
 /* 361 */,
-/* 362 */,
+/* 362 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagComponentLogger = void 0;
+var global_utils_1 = __webpack_require__(525);
+/**
+ * Component Logger which is meant to be used as part of any component which
+ * will add automatically additional namespace in front of the log message.
+ * It will then forward all message to global diag logger
+ * @example
+ * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });
+ * cLogger.debug('test');
+ * // @opentelemetry/instrumentation-http test
+ */
+var DiagComponentLogger = /** @class */ (function () {
+    function DiagComponentLogger(props) {
+        this._namespace = props.namespace || 'DiagComponentLogger';
+    }
+    DiagComponentLogger.prototype.debug = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('debug', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.error = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('error', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.info = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('info', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.warn = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('warn', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.verbose = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('verbose', this._namespace, args);
+    };
+    return DiagComponentLogger;
+}());
+exports.DiagComponentLogger = DiagComponentLogger;
+function logProxy(funcName, namespace, args) {
+    var logger = global_utils_1.getGlobal('diag');
+    // shortcut if logger not set
+    if (!logger) {
+        return;
+    }
+    args.unshift(namespace);
+    return logger[funcName].apply(logger, args);
+}
+//# sourceMappingURL=ComponentLogger.js.map
+
+/***/ }),
 /* 363 */,
 /* 364 */,
 /* 365 */,
@@ -9673,45 +9666,296 @@ module.exports = require("assert");
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var coreHttp = __webpack_require__(999);
-var tslib = __webpack_require__(815);
-var api = __webpack_require__(440);
+var tslib = __webpack_require__(608);
+var coreTracing = __webpack_require__(263);
 var logger$1 = __webpack_require__(928);
 var abortController = __webpack_require__(106);
 var os = __webpack_require__(87);
+var crypto = __webpack_require__(417);
 var stream = __webpack_require__(794);
 __webpack_require__(510);
-var crypto = __webpack_require__(417);
 var coreLro = __webpack_require__(889);
 var events = __webpack_require__(614);
-var coreTracing = __webpack_require__(263);
 var fs = __webpack_require__(747);
 var util = __webpack_require__(669);
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var KeyInfo = {
-    serializedName: "KeyInfo",
+const BlobServiceProperties = {
+    serializedName: "BlobServiceProperties",
+    xmlName: "StorageServiceProperties",
     type: {
         name: "Composite",
-        className: "KeyInfo",
+        className: "BlobServiceProperties",
         modelProperties: {
-            startsOn: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
+            blobAnalyticsLogging: {
+                serializedName: "Logging",
+                xmlName: "Logging",
+                type: {
+                    name: "Composite",
+                    className: "Logging"
+                }
+            },
+            hourMetrics: {
+                serializedName: "HourMetrics",
+                xmlName: "HourMetrics",
+                type: {
+                    name: "Composite",
+                    className: "Metrics"
+                }
+            },
+            minuteMetrics: {
+                serializedName: "MinuteMetrics",
+                xmlName: "MinuteMetrics",
+                type: {
+                    name: "Composite",
+                    className: "Metrics"
+                }
+            },
+            cors: {
+                serializedName: "Cors",
+                xmlName: "Cors",
+                xmlIsWrapped: true,
+                xmlElementName: "CorsRule",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "CorsRule"
+                        }
+                    }
+                }
+            },
+            defaultServiceVersion: {
+                serializedName: "DefaultServiceVersion",
+                xmlName: "DefaultServiceVersion",
                 type: {
                     name: "String"
                 }
             },
-            expiresOn: {
-                xmlName: "Expiry",
+            deleteRetentionPolicy: {
+                serializedName: "DeleteRetentionPolicy",
+                xmlName: "DeleteRetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            },
+            staticWebsite: {
+                serializedName: "StaticWebsite",
+                xmlName: "StaticWebsite",
+                type: {
+                    name: "Composite",
+                    className: "StaticWebsite"
+                }
+            }
+        }
+    }
+};
+const Logging = {
+    serializedName: "Logging",
+    type: {
+        name: "Composite",
+        className: "Logging",
+        modelProperties: {
+            version: {
+                serializedName: "Version",
                 required: true,
-                serializedName: "Expiry",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            deleteProperty: {
+                serializedName: "Delete",
+                required: true,
+                xmlName: "Delete",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            read: {
+                serializedName: "Read",
+                required: true,
+                xmlName: "Read",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            write: {
+                serializedName: "Write",
+                required: true,
+                xmlName: "Write",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            retentionPolicy: {
+                serializedName: "RetentionPolicy",
+                xmlName: "RetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            }
+        }
+    }
+};
+const RetentionPolicy = {
+    serializedName: "RetentionPolicy",
+    type: {
+        name: "Composite",
+        className: "RetentionPolicy",
+        modelProperties: {
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            days: {
+                constraints: {
+                    InclusiveMinimum: 1
+                },
+                serializedName: "Days",
+                xmlName: "Days",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const Metrics = {
+    serializedName: "Metrics",
+    type: {
+        name: "Composite",
+        className: "Metrics",
+        modelProperties: {
+            version: {
+                serializedName: "Version",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            includeAPIs: {
+                serializedName: "IncludeAPIs",
+                xmlName: "IncludeAPIs",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            retentionPolicy: {
+                serializedName: "RetentionPolicy",
+                xmlName: "RetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            }
+        }
+    }
+};
+const CorsRule = {
+    serializedName: "CorsRule",
+    type: {
+        name: "Composite",
+        className: "CorsRule",
+        modelProperties: {
+            allowedOrigins: {
+                serializedName: "AllowedOrigins",
+                required: true,
+                xmlName: "AllowedOrigins",
+                type: {
+                    name: "String"
+                }
+            },
+            allowedMethods: {
+                serializedName: "AllowedMethods",
+                required: true,
+                xmlName: "AllowedMethods",
+                type: {
+                    name: "String"
+                }
+            },
+            allowedHeaders: {
+                serializedName: "AllowedHeaders",
+                required: true,
+                xmlName: "AllowedHeaders",
+                type: {
+                    name: "String"
+                }
+            },
+            exposedHeaders: {
+                serializedName: "ExposedHeaders",
+                required: true,
+                xmlName: "ExposedHeaders",
+                type: {
+                    name: "String"
+                }
+            },
+            maxAgeInSeconds: {
+                constraints: {
+                    InclusiveMinimum: 0
+                },
+                serializedName: "MaxAgeInSeconds",
+                required: true,
+                xmlName: "MaxAgeInSeconds",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const StaticWebsite = {
+    serializedName: "StaticWebsite",
+    type: {
+        name: "Composite",
+        className: "StaticWebsite",
+        modelProperties: {
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            indexDocument: {
+                serializedName: "IndexDocument",
+                xmlName: "IndexDocument",
+                type: {
+                    name: "String"
+                }
+            },
+            errorDocument404Path: {
+                serializedName: "ErrorDocument404Path",
+                xmlName: "ErrorDocument404Path",
+                type: {
+                    name: "String"
+                }
+            },
+            defaultIndexDocumentPath: {
+                serializedName: "DefaultIndexDocumentPath",
+                xmlName: "DefaultIndexDocumentPath",
                 type: {
                     name: "String"
                 }
@@ -9719,103 +9963,22 @@ var KeyInfo = {
         }
     }
 };
-var UserDelegationKey = {
-    serializedName: "UserDelegationKey",
-    type: {
-        name: "Composite",
-        className: "UserDelegationKey",
-        modelProperties: {
-            signedObjectId: {
-                xmlName: "SignedOid",
-                required: true,
-                serializedName: "SignedOid",
-                type: {
-                    name: "String"
-                }
-            },
-            signedTenantId: {
-                xmlName: "SignedTid",
-                required: true,
-                serializedName: "SignedTid",
-                type: {
-                    name: "String"
-                }
-            },
-            signedStartsOn: {
-                xmlName: "SignedStart",
-                required: true,
-                serializedName: "SignedStart",
-                type: {
-                    name: "String"
-                }
-            },
-            signedExpiresOn: {
-                xmlName: "SignedExpiry",
-                required: true,
-                serializedName: "SignedExpiry",
-                type: {
-                    name: "String"
-                }
-            },
-            signedService: {
-                xmlName: "SignedService",
-                required: true,
-                serializedName: "SignedService",
-                type: {
-                    name: "String"
-                }
-            },
-            signedVersion: {
-                xmlName: "SignedVersion",
-                required: true,
-                serializedName: "SignedVersion",
-                type: {
-                    name: "String"
-                }
-            },
-            value: {
-                xmlName: "Value",
-                required: true,
-                serializedName: "Value",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var StorageError = {
+const StorageError = {
     serializedName: "StorageError",
     type: {
         name: "Composite",
         className: "StorageError",
         modelProperties: {
             message: {
-                xmlName: "Message",
                 serializedName: "Message",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var DataLakeStorageErrorError = {
-    serializedName: "DataLakeStorageError_error",
-    type: {
-        name: "Composite",
-        className: "DataLakeStorageErrorError",
-        modelProperties: {
-            code: {
-                xmlName: "Code",
-                serializedName: "Code",
+                xmlName: "Message",
                 type: {
                     name: "String"
                 }
             },
-            message: {
-                xmlName: "Message",
-                serializedName: "Message",
+            code: {
+                serializedName: "Code",
+                xmlName: "Code",
                 type: {
                     name: "String"
                 }
@@ -9823,165 +9986,194 @@ var DataLakeStorageErrorError = {
         }
     }
 };
-var DataLakeStorageError = {
-    serializedName: "DataLakeStorageError",
+const BlobServiceStatistics = {
+    serializedName: "BlobServiceStatistics",
+    xmlName: "StorageServiceStats",
     type: {
         name: "Composite",
-        className: "DataLakeStorageError",
+        className: "BlobServiceStatistics",
         modelProperties: {
-            dataLakeStorageErrorDetails: {
-                xmlName: "error",
-                serializedName: "error",
+            geoReplication: {
+                serializedName: "GeoReplication",
+                xmlName: "GeoReplication",
                 type: {
                     name: "Composite",
-                    className: "DataLakeStorageErrorError"
+                    className: "GeoReplication"
                 }
             }
         }
     }
 };
-var AccessPolicy = {
-    serializedName: "AccessPolicy",
+const GeoReplication = {
+    serializedName: "GeoReplication",
     type: {
         name: "Composite",
-        className: "AccessPolicy",
+        className: "GeoReplication",
         modelProperties: {
-            startsOn: {
-                xmlName: "Start",
-                serializedName: "Start",
+            status: {
+                serializedName: "Status",
+                required: true,
+                xmlName: "Status",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["live", "bootstrap", "unavailable"]
                 }
             },
-            expiresOn: {
-                xmlName: "Expiry",
-                serializedName: "Expiry",
-                type: {
-                    name: "String"
-                }
-            },
-            permissions: {
-                xmlName: "Permission",
-                serializedName: "Permission",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobPropertiesInternal = {
-    xmlName: "Properties",
-    serializedName: "BlobPropertiesInternal",
-    type: {
-        name: "Composite",
-        className: "BlobPropertiesInternal",
-        modelProperties: {
-            createdOn: {
-                xmlName: "Creation-Time",
-                serializedName: "Creation-Time",
+            lastSyncOn: {
+                serializedName: "LastSyncTime",
+                required: true,
+                xmlName: "LastSyncTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
-            lastModified: {
-                xmlName: "Last-Modified",
+            }
+        }
+    }
+};
+const ListContainersSegmentResponse = {
+    serializedName: "ListContainersSegmentResponse",
+    xmlName: "EnumerationResults",
+    type: {
+        name: "Composite",
+        className: "ListContainersSegmentResponse",
+        modelProperties: {
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
                 required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
+                type: {
+                    name: "String"
+                }
+            },
+            prefix: {
+                serializedName: "Prefix",
+                xmlName: "Prefix",
+                type: {
+                    name: "String"
+                }
+            },
+            marker: {
+                serializedName: "Marker",
+                xmlName: "Marker",
+                type: {
+                    name: "String"
+                }
+            },
+            maxPageSize: {
+                serializedName: "MaxResults",
+                xmlName: "MaxResults",
+                type: {
+                    name: "Number"
+                }
+            },
+            containerItems: {
+                serializedName: "ContainerItems",
+                required: true,
+                xmlName: "Containers",
+                xmlIsWrapped: true,
+                xmlElementName: "Container",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "ContainerItem"
+                        }
+                    }
+                }
+            },
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerItem = {
+    serializedName: "ContainerItem",
+    xmlName: "Container",
+    type: {
+        name: "Composite",
+        className: "ContainerItem",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            },
+            deleted: {
+                serializedName: "Deleted",
+                xmlName: "Deleted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            version: {
+                serializedName: "Version",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            properties: {
+                serializedName: "Properties",
+                xmlName: "Properties",
+                type: {
+                    name: "Composite",
+                    className: "ContainerProperties"
+                }
+            },
+            metadata: {
+                serializedName: "Metadata",
+                xmlName: "Metadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            }
+        }
+    }
+};
+const ContainerProperties = {
+    serializedName: "ContainerProperties",
+    type: {
+        name: "Composite",
+        className: "ContainerProperties",
+        modelProperties: {
+            lastModified: {
                 serializedName: "Last-Modified",
+                required: true,
+                xmlName: "Last-Modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             etag: {
-                xmlName: "Etag",
-                required: true,
                 serializedName: "Etag",
+                required: true,
+                xmlName: "Etag",
                 type: {
                     name: "String"
                 }
             },
-            contentLength: {
-                xmlName: "Content-Length",
-                serializedName: "Content-Length",
-                type: {
-                    name: "Number"
-                }
-            },
-            contentType: {
-                xmlName: "Content-Type",
-                serializedName: "Content-Type",
-                type: {
-                    name: "String"
-                }
-            },
-            contentEncoding: {
-                xmlName: "Content-Encoding",
-                serializedName: "Content-Encoding",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLanguage: {
-                xmlName: "Content-Language",
-                serializedName: "Content-Language",
-                type: {
-                    name: "String"
-                }
-            },
-            contentMD5: {
-                xmlName: "Content-MD5",
-                serializedName: "Content-MD5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentDisposition: {
-                xmlName: "Content-Disposition",
-                serializedName: "Content-Disposition",
-                type: {
-                    name: "String"
-                }
-            },
-            cacheControl: {
-                xmlName: "Cache-Control",
-                serializedName: "Cache-Control",
-                type: {
-                    name: "String"
-                }
-            },
-            blobSequenceNumber: {
-                xmlName: "x-ms-blob-sequence-number",
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            blobType: {
-                xmlName: "BlobType",
-                serializedName: "BlobType",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
-                }
-            },
             leaseStatus: {
-                xmlName: "LeaseStatus",
                 serializedName: "LeaseStatus",
+                xmlName: "LeaseStatus",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             leaseState: {
-                xmlName: "LeaseState",
                 serializedName: "LeaseState",
+                xmlName: "LeaseState",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -9994,165 +10186,91 @@ var BlobPropertiesInternal = {
                 }
             },
             leaseDuration: {
-                xmlName: "LeaseDuration",
                 serializedName: "LeaseDuration",
+                xmlName: "LeaseDuration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
-            copyId: {
-                xmlName: "CopyId",
-                serializedName: "CopyId",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                xmlName: "CopyStatus",
-                serializedName: "CopyStatus",
+            publicAccess: {
+                serializedName: "PublicAccess",
+                xmlName: "PublicAccess",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["container", "blob"]
                 }
             },
-            copySource: {
-                xmlName: "CopySource",
-                serializedName: "CopySource",
-                type: {
-                    name: "String"
-                }
-            },
-            copyProgress: {
-                xmlName: "CopyProgress",
-                serializedName: "CopyProgress",
-                type: {
-                    name: "String"
-                }
-            },
-            copyCompletedOn: {
-                xmlName: "CopyCompletionTime",
-                serializedName: "CopyCompletionTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyStatusDescription: {
-                xmlName: "CopyStatusDescription",
-                serializedName: "CopyStatusDescription",
-                type: {
-                    name: "String"
-                }
-            },
-            serverEncrypted: {
-                xmlName: "ServerEncrypted",
-                serializedName: "ServerEncrypted",
+            hasImmutabilityPolicy: {
+                serializedName: "HasImmutabilityPolicy",
+                xmlName: "HasImmutabilityPolicy",
                 type: {
                     name: "Boolean"
                 }
             },
-            incrementalCopy: {
-                xmlName: "IncrementalCopy",
-                serializedName: "IncrementalCopy",
+            hasLegalHold: {
+                serializedName: "HasLegalHold",
+                xmlName: "HasLegalHold",
                 type: {
                     name: "Boolean"
                 }
             },
-            destinationSnapshot: {
-                xmlName: "DestinationSnapshot",
-                serializedName: "DestinationSnapshot",
+            defaultEncryptionScope: {
+                serializedName: "DefaultEncryptionScope",
+                xmlName: "DefaultEncryptionScope",
                 type: {
                     name: "String"
                 }
             },
+            preventEncryptionScopeOverride: {
+                serializedName: "DenyEncryptionScopeOverride",
+                xmlName: "DenyEncryptionScopeOverride",
+                type: {
+                    name: "Boolean"
+                }
+            },
             deletedOn: {
-                xmlName: "DeletedTime",
                 serializedName: "DeletedTime",
+                xmlName: "DeletedTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             remainingRetentionDays: {
-                xmlName: "RemainingRetentionDays",
                 serializedName: "RemainingRetentionDays",
+                xmlName: "RemainingRetentionDays",
                 type: {
                     name: "Number"
                 }
             },
-            accessTier: {
-                xmlName: "AccessTier",
-                serializedName: "AccessTier",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierInferred: {
-                xmlName: "AccessTierInferred",
-                serializedName: "AccessTierInferred",
+            isImmutableStorageWithVersioningEnabled: {
+                serializedName: "ImmutableStorageWithVersioningEnabled",
+                xmlName: "ImmutableStorageWithVersioningEnabled",
                 type: {
                     name: "Boolean"
                 }
-            },
-            archiveStatus: {
-                xmlName: "ArchiveStatus",
-                serializedName: "ArchiveStatus",
+            }
+        }
+    }
+};
+const KeyInfo = {
+    serializedName: "KeyInfo",
+    type: {
+        name: "Composite",
+        className: "KeyInfo",
+        modelProperties: {
+            startsOn: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
                 type: {
                     name: "String"
                 }
             },
-            customerProvidedKeySha256: {
-                xmlName: "CustomerProvidedKeySha256",
-                serializedName: "CustomerProvidedKeySha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                xmlName: "EncryptionScope",
-                serializedName: "EncryptionScope",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierChangedOn: {
-                xmlName: "AccessTierChangeTime",
-                serializedName: "AccessTierChangeTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            tagCount: {
-                xmlName: "TagCount",
-                serializedName: "TagCount",
-                type: {
-                    name: "Number"
-                }
-            },
             expiresOn: {
-                xmlName: "Expiry-Time",
-                serializedName: "Expiry-Time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isSealed: {
-                xmlName: "Sealed",
-                serializedName: "Sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            rehydratePriority: {
-                xmlName: "RehydratePriority",
-                serializedName: "RehydratePriority",
+                serializedName: "Expiry",
+                required: true,
+                xmlName: "Expiry",
                 type: {
                     name: "String"
                 }
@@ -10160,25 +10278,64 @@ var BlobPropertiesInternal = {
         }
     }
 };
-var BlobTag = {
-    xmlName: "Tag",
-    serializedName: "BlobTag",
+const UserDelegationKey = {
+    serializedName: "UserDelegationKey",
     type: {
         name: "Composite",
-        className: "BlobTag",
+        className: "UserDelegationKey",
         modelProperties: {
-            key: {
-                xmlName: "Key",
+            signedObjectId: {
+                serializedName: "SignedOid",
                 required: true,
-                serializedName: "Key",
+                xmlName: "SignedOid",
+                type: {
+                    name: "String"
+                }
+            },
+            signedTenantId: {
+                serializedName: "SignedTid",
+                required: true,
+                xmlName: "SignedTid",
+                type: {
+                    name: "String"
+                }
+            },
+            signedStartsOn: {
+                serializedName: "SignedStart",
+                required: true,
+                xmlName: "SignedStart",
+                type: {
+                    name: "String"
+                }
+            },
+            signedExpiresOn: {
+                serializedName: "SignedExpiry",
+                required: true,
+                xmlName: "SignedExpiry",
+                type: {
+                    name: "String"
+                }
+            },
+            signedService: {
+                serializedName: "SignedService",
+                required: true,
+                xmlName: "SignedService",
+                type: {
+                    name: "String"
+                }
+            },
+            signedVersion: {
+                serializedName: "SignedVersion",
+                required: true,
+                xmlName: "SignedVersion",
                 type: {
                     name: "String"
                 }
             },
             value: {
-                xmlName: "Value",
-                required: true,
                 serializedName: "Value",
+                required: true,
+                xmlName: "Value",
                 type: {
                     name: "String"
                 }
@@ -10186,19 +10343,103 @@ var BlobTag = {
         }
     }
 };
-var BlobTags = {
-    xmlName: "Tags",
+const FilterBlobSegment = {
+    serializedName: "FilterBlobSegment",
+    xmlName: "EnumerationResults",
+    type: {
+        name: "Composite",
+        className: "FilterBlobSegment",
+        modelProperties: {
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
+                required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
+                type: {
+                    name: "String"
+                }
+            },
+            where: {
+                serializedName: "Where",
+                required: true,
+                xmlName: "Where",
+                type: {
+                    name: "String"
+                }
+            },
+            blobs: {
+                serializedName: "Blobs",
+                required: true,
+                xmlName: "Blobs",
+                xmlIsWrapped: true,
+                xmlElementName: "Blob",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "FilterBlobItem"
+                        }
+                    }
+                }
+            },
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const FilterBlobItem = {
+    serializedName: "FilterBlobItem",
+    xmlName: "Blob",
+    type: {
+        name: "Composite",
+        className: "FilterBlobItem",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            },
+            containerName: {
+                serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                type: {
+                    name: "String"
+                }
+            },
+            tags: {
+                serializedName: "Tags",
+                xmlName: "Tags",
+                type: {
+                    name: "Composite",
+                    className: "BlobTags"
+                }
+            }
+        }
+    }
+};
+const BlobTags = {
     serializedName: "BlobTags",
+    xmlName: "Tags",
     type: {
         name: "Composite",
         className: "BlobTags",
         modelProperties: {
             blobTagSet: {
-                xmlIsWrapped: true,
-                xmlName: "TagSet",
-                xmlElementName: "Tag",
-                required: true,
                 serializedName: "BlobTagSet",
+                required: true,
+                xmlName: "TagSet",
+                xmlIsWrapped: true,
+                xmlElementName: "Tag",
                 type: {
                     name: "Sequence",
                     element: {
@@ -10212,178 +10453,145 @@ var BlobTags = {
         }
     }
 };
-var BlobItemInternal = {
-    xmlName: "Blob",
-    serializedName: "BlobItemInternal",
+const BlobTag = {
+    serializedName: "BlobTag",
+    xmlName: "Tag",
     type: {
         name: "Composite",
-        className: "BlobItemInternal",
+        className: "BlobTag",
         modelProperties: {
-            name: {
-                xmlName: "Name",
+            key: {
+                serializedName: "Key",
                 required: true,
-                serializedName: "Name",
+                xmlName: "Key",
                 type: {
                     name: "String"
                 }
             },
-            deleted: {
-                xmlName: "Deleted",
+            value: {
+                serializedName: "Value",
                 required: true,
-                serializedName: "Deleted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            snapshot: {
-                xmlName: "Snapshot",
-                required: true,
-                serializedName: "Snapshot",
+                xmlName: "Value",
                 type: {
                     name: "String"
                 }
-            },
-            versionId: {
-                xmlName: "VersionId",
-                serializedName: "VersionId",
-                type: {
-                    name: "String"
-                }
-            },
-            isCurrentVersion: {
-                xmlName: "IsCurrentVersion",
-                serializedName: "IsCurrentVersion",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            properties: {
-                xmlName: "Properties",
-                required: true,
-                serializedName: "Properties",
-                type: {
-                    name: "Composite",
-                    className: "BlobPropertiesInternal"
-                }
-            },
-            metadata: {
-                xmlName: "Metadata",
-                serializedName: "Metadata",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            blobTags: {
-                xmlName: "Tags",
-                serializedName: "BlobTags",
-                type: {
-                    name: "Composite",
-                    className: "BlobTags"
-                }
-            },
-            objectReplicationMetadata: {
-                xmlName: "OrMetadata",
-                serializedName: "ObjectReplicationMetadata",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
             }
         }
     }
 };
-var BlobFlatListSegment = {
-    xmlName: "Blobs",
-    serializedName: "BlobFlatListSegment",
+const SignedIdentifier = {
+    serializedName: "SignedIdentifier",
+    xmlName: "SignedIdentifier",
     type: {
         name: "Composite",
-        className: "BlobFlatListSegment",
+        className: "SignedIdentifier",
         modelProperties: {
-            blobItems: {
-                xmlName: "BlobItems",
-                xmlElementName: "Blob",
+            id: {
+                serializedName: "Id",
                 required: true,
-                serializedName: "BlobItems",
+                xmlName: "Id",
                 type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "BlobItemInternal"
-                        }
-                    }
+                    name: "String"
+                }
+            },
+            accessPolicy: {
+                serializedName: "AccessPolicy",
+                xmlName: "AccessPolicy",
+                type: {
+                    name: "Composite",
+                    className: "AccessPolicy"
                 }
             }
         }
     }
 };
-var ListBlobsFlatSegmentResponse = {
-    xmlName: "EnumerationResults",
+const AccessPolicy = {
+    serializedName: "AccessPolicy",
+    type: {
+        name: "Composite",
+        className: "AccessPolicy",
+        modelProperties: {
+            startsOn: {
+                serializedName: "Start",
+                xmlName: "Start",
+                type: {
+                    name: "String"
+                }
+            },
+            expiresOn: {
+                serializedName: "Expiry",
+                xmlName: "Expiry",
+                type: {
+                    name: "String"
+                }
+            },
+            permissions: {
+                serializedName: "Permission",
+                xmlName: "Permission",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ListBlobsFlatSegmentResponse = {
     serializedName: "ListBlobsFlatSegmentResponse",
+    xmlName: "EnumerationResults",
     type: {
         name: "Composite",
         className: "ListBlobsFlatSegmentResponse",
         modelProperties: {
             serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
                 serializedName: "ServiceEndpoint",
+                required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
             containerName: {
-                xmlIsAttribute: true,
-                xmlName: "ContainerName",
-                required: true,
                 serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
             prefix: {
-                xmlName: "Prefix",
                 serializedName: "Prefix",
+                xmlName: "Prefix",
                 type: {
                     name: "String"
                 }
             },
             marker: {
-                xmlName: "Marker",
                 serializedName: "Marker",
+                xmlName: "Marker",
                 type: {
                     name: "String"
                 }
             },
             maxPageSize: {
-                xmlName: "MaxResults",
                 serializedName: "MaxResults",
+                xmlName: "MaxResults",
                 type: {
                     name: "Number"
                 }
             },
             segment: {
-                xmlName: "Blobs",
-                required: true,
                 serializedName: "Segment",
+                xmlName: "Blobs",
                 type: {
                     name: "Composite",
                     className: "BlobFlatListSegment"
                 }
             },
             continuationToken: {
-                xmlName: "NextMarker",
                 serializedName: "NextMarker",
+                xmlName: "NextMarker",
                 type: {
                     name: "String"
                 }
@@ -10391,49 +10599,18 @@ var ListBlobsFlatSegmentResponse = {
         }
     }
 };
-var BlobPrefix = {
-    serializedName: "BlobPrefix",
-    type: {
-        name: "Composite",
-        className: "BlobPrefix",
-        modelProperties: {
-            name: {
-                xmlName: "Name",
-                required: true,
-                serializedName: "Name",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobHierarchyListSegment = {
+const BlobFlatListSegment = {
+    serializedName: "BlobFlatListSegment",
     xmlName: "Blobs",
-    serializedName: "BlobHierarchyListSegment",
     type: {
         name: "Composite",
-        className: "BlobHierarchyListSegment",
+        className: "BlobFlatListSegment",
         modelProperties: {
-            blobPrefixes: {
-                xmlName: "BlobPrefixes",
-                xmlElementName: "BlobPrefix",
-                serializedName: "BlobPrefixes",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "BlobPrefix"
-                        }
-                    }
-                }
-            },
             blobItems: {
+                serializedName: "BlobItems",
+                required: true,
                 xmlName: "BlobItems",
                 xmlElementName: "Blob",
-                required: true,
-                serializedName: "BlobItems",
                 type: {
                     name: "Sequence",
                     element: {
@@ -10447,227 +10624,198 @@ var BlobHierarchyListSegment = {
         }
     }
 };
-var ListBlobsHierarchySegmentResponse = {
-    xmlName: "EnumerationResults",
-    serializedName: "ListBlobsHierarchySegmentResponse",
+const BlobItemInternal = {
+    serializedName: "BlobItemInternal",
+    xmlName: "Blob",
     type: {
         name: "Composite",
-        className: "ListBlobsHierarchySegmentResponse",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            containerName: {
-                xmlIsAttribute: true,
-                xmlName: "ContainerName",
-                required: true,
-                serializedName: "ContainerName",
-                type: {
-                    name: "String"
-                }
-            },
-            prefix: {
-                xmlName: "Prefix",
-                serializedName: "Prefix",
-                type: {
-                    name: "String"
-                }
-            },
-            marker: {
-                xmlName: "Marker",
-                serializedName: "Marker",
-                type: {
-                    name: "String"
-                }
-            },
-            maxPageSize: {
-                xmlName: "MaxResults",
-                serializedName: "MaxResults",
-                type: {
-                    name: "Number"
-                }
-            },
-            delimiter: {
-                xmlName: "Delimiter",
-                serializedName: "Delimiter",
-                type: {
-                    name: "String"
-                }
-            },
-            segment: {
-                xmlName: "Blobs",
-                required: true,
-                serializedName: "Segment",
-                type: {
-                    name: "Composite",
-                    className: "BlobHierarchyListSegment"
-                }
-            },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var Block = {
-    serializedName: "Block",
-    type: {
-        name: "Composite",
-        className: "Block",
+        className: "BlobItemInternal",
         modelProperties: {
             name: {
-                xmlName: "Name",
-                required: true,
                 serializedName: "Name",
+                required: true,
+                xmlName: "Name",
                 type: {
                     name: "String"
                 }
             },
-            size: {
-                xmlName: "Size",
+            deleted: {
+                serializedName: "Deleted",
                 required: true,
-                serializedName: "Size",
+                xmlName: "Deleted",
                 type: {
-                    name: "Number"
+                    name: "Boolean"
+                }
+            },
+            snapshot: {
+                serializedName: "Snapshot",
+                required: true,
+                xmlName: "Snapshot",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "VersionId",
+                xmlName: "VersionId",
+                type: {
+                    name: "String"
+                }
+            },
+            isCurrentVersion: {
+                serializedName: "IsCurrentVersion",
+                xmlName: "IsCurrentVersion",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            properties: {
+                serializedName: "Properties",
+                xmlName: "Properties",
+                type: {
+                    name: "Composite",
+                    className: "BlobPropertiesInternal"
+                }
+            },
+            metadata: {
+                serializedName: "Metadata",
+                xmlName: "Metadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            },
+            blobTags: {
+                serializedName: "BlobTags",
+                xmlName: "Tags",
+                type: {
+                    name: "Composite",
+                    className: "BlobTags"
+                }
+            },
+            objectReplicationMetadata: {
+                serializedName: "ObjectReplicationMetadata",
+                xmlName: "OrMetadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            },
+            hasVersionsOnly: {
+                serializedName: "HasVersionsOnly",
+                xmlName: "HasVersionsOnly",
+                type: {
+                    name: "Boolean"
                 }
             }
         }
     }
 };
-var BlockList = {
-    serializedName: "BlockList",
+const BlobPropertiesInternal = {
+    serializedName: "BlobPropertiesInternal",
+    xmlName: "Properties",
     type: {
         name: "Composite",
-        className: "BlockList",
+        className: "BlobPropertiesInternal",
         modelProperties: {
-            committedBlocks: {
-                xmlIsWrapped: true,
-                xmlName: "CommittedBlocks",
-                xmlElementName: "Block",
-                serializedName: "CommittedBlocks",
+            createdOn: {
+                serializedName: "Creation-Time",
+                xmlName: "Creation-Time",
                 type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "Block"
-                        }
-                    }
+                    name: "DateTimeRfc1123"
                 }
             },
-            uncommittedBlocks: {
-                xmlIsWrapped: true,
-                xmlName: "UncommittedBlocks",
-                xmlElementName: "Block",
-                serializedName: "UncommittedBlocks",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "Block"
-                        }
-                    }
-                }
-            }
-        }
-    }
-};
-var BlockLookupList = {
-    xmlName: "BlockList",
-    serializedName: "BlockLookupList",
-    type: {
-        name: "Composite",
-        className: "BlockLookupList",
-        modelProperties: {
-            committed: {
-                xmlName: "Committed",
-                xmlElementName: "Committed",
-                serializedName: "Committed",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            uncommitted: {
-                xmlName: "Uncommitted",
-                xmlElementName: "Uncommitted",
-                serializedName: "Uncommitted",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            latest: {
-                xmlName: "Latest",
-                xmlElementName: "Latest",
-                serializedName: "Latest",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            }
-        }
-    }
-};
-var ContainerProperties = {
-    serializedName: "ContainerProperties",
-    type: {
-        name: "Composite",
-        className: "ContainerProperties",
-        modelProperties: {
             lastModified: {
-                xmlName: "Last-Modified",
-                required: true,
                 serializedName: "Last-Modified",
+                required: true,
+                xmlName: "Last-Modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             etag: {
-                xmlName: "Etag",
-                required: true,
                 serializedName: "Etag",
+                required: true,
+                xmlName: "Etag",
                 type: {
                     name: "String"
                 }
             },
-            leaseStatus: {
-                xmlName: "LeaseStatus",
-                serializedName: "LeaseStatus",
+            contentLength: {
+                serializedName: "Content-Length",
+                xmlName: "Content-Length",
+                type: {
+                    name: "Number"
+                }
+            },
+            contentType: {
+                serializedName: "Content-Type",
+                xmlName: "Content-Type",
+                type: {
+                    name: "String"
+                }
+            },
+            contentEncoding: {
+                serializedName: "Content-Encoding",
+                xmlName: "Content-Encoding",
+                type: {
+                    name: "String"
+                }
+            },
+            contentLanguage: {
+                serializedName: "Content-Language",
+                xmlName: "Content-Language",
+                type: {
+                    name: "String"
+                }
+            },
+            contentMD5: {
+                serializedName: "Content-MD5",
+                xmlName: "Content-MD5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            contentDisposition: {
+                serializedName: "Content-Disposition",
+                xmlName: "Content-Disposition",
+                type: {
+                    name: "String"
+                }
+            },
+            cacheControl: {
+                serializedName: "Cache-Control",
+                xmlName: "Cache-Control",
+                type: {
+                    name: "String"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            blobType: {
+                serializedName: "BlobType",
+                xmlName: "BlobType",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
+                }
+            },
+            leaseStatus: {
+                serializedName: "LeaseStatus",
+                xmlName: "LeaseStatus",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             leaseState: {
-                xmlName: "LeaseState",
                 serializedName: "LeaseState",
+                xmlName: "LeaseState",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -10680,112 +10828,381 @@ var ContainerProperties = {
                 }
             },
             leaseDuration: {
-                xmlName: "LeaseDuration",
                 serializedName: "LeaseDuration",
+                xmlName: "LeaseDuration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
-            publicAccess: {
-                xmlName: "PublicAccess",
-                serializedName: "PublicAccess",
+            copyId: {
+                serializedName: "CopyId",
+                xmlName: "CopyId",
                 type: {
                     name: "String"
                 }
             },
-            hasImmutabilityPolicy: {
-                xmlName: "HasImmutabilityPolicy",
-                serializedName: "HasImmutabilityPolicy",
+            copyStatus: {
+                serializedName: "CopyStatus",
+                xmlName: "CopyStatus",
                 type: {
-                    name: "Boolean"
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
-            hasLegalHold: {
-                xmlName: "HasLegalHold",
-                serializedName: "HasLegalHold",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            defaultEncryptionScope: {
-                xmlName: "DefaultEncryptionScope",
-                serializedName: "DefaultEncryptionScope",
+            copySource: {
+                serializedName: "CopySource",
+                xmlName: "CopySource",
                 type: {
                     name: "String"
                 }
             },
-            preventEncryptionScopeOverride: {
-                xmlName: "DenyEncryptionScopeOverride",
-                serializedName: "DenyEncryptionScopeOverride",
+            copyProgress: {
+                serializedName: "CopyProgress",
+                xmlName: "CopyProgress",
+                type: {
+                    name: "String"
+                }
+            },
+            copyCompletedOn: {
+                serializedName: "CopyCompletionTime",
+                xmlName: "CopyCompletionTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyStatusDescription: {
+                serializedName: "CopyStatusDescription",
+                xmlName: "CopyStatusDescription",
+                type: {
+                    name: "String"
+                }
+            },
+            serverEncrypted: {
+                serializedName: "ServerEncrypted",
+                xmlName: "ServerEncrypted",
                 type: {
                     name: "Boolean"
                 }
             },
+            incrementalCopy: {
+                serializedName: "IncrementalCopy",
+                xmlName: "IncrementalCopy",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            destinationSnapshot: {
+                serializedName: "DestinationSnapshot",
+                xmlName: "DestinationSnapshot",
+                type: {
+                    name: "String"
+                }
+            },
             deletedOn: {
-                xmlName: "DeletedTime",
                 serializedName: "DeletedTime",
+                xmlName: "DeletedTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             remainingRetentionDays: {
-                xmlName: "RemainingRetentionDays",
                 serializedName: "RemainingRetentionDays",
+                xmlName: "RemainingRetentionDays",
                 type: {
                     name: "Number"
                 }
+            },
+            accessTier: {
+                serializedName: "AccessTier",
+                xmlName: "AccessTier",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "P4",
+                        "P6",
+                        "P10",
+                        "P15",
+                        "P20",
+                        "P30",
+                        "P40",
+                        "P50",
+                        "P60",
+                        "P70",
+                        "P80",
+                        "Hot",
+                        "Cool",
+                        "Archive"
+                    ]
+                }
+            },
+            accessTierInferred: {
+                serializedName: "AccessTierInferred",
+                xmlName: "AccessTierInferred",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            archiveStatus: {
+                serializedName: "ArchiveStatus",
+                xmlName: "ArchiveStatus",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "rehydrate-pending-to-hot",
+                        "rehydrate-pending-to-cool"
+                    ]
+                }
+            },
+            customerProvidedKeySha256: {
+                serializedName: "CustomerProvidedKeySha256",
+                xmlName: "CustomerProvidedKeySha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "EncryptionScope",
+                xmlName: "EncryptionScope",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierChangedOn: {
+                serializedName: "AccessTierChangeTime",
+                xmlName: "AccessTierChangeTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            tagCount: {
+                serializedName: "TagCount",
+                xmlName: "TagCount",
+                type: {
+                    name: "Number"
+                }
+            },
+            expiresOn: {
+                serializedName: "Expiry-Time",
+                xmlName: "Expiry-Time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isSealed: {
+                serializedName: "Sealed",
+                xmlName: "Sealed",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            rehydratePriority: {
+                serializedName: "RehydratePriority",
+                xmlName: "RehydratePriority",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["High", "Standard"]
+                }
+            },
+            lastAccessedOn: {
+                serializedName: "LastAccessTime",
+                xmlName: "LastAccessTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "ImmutabilityPolicyUntilDate",
+                xmlName: "ImmutabilityPolicyUntilDate",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "ImmutabilityPolicyMode",
+                xmlName: "ImmutabilityPolicyMode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "LegalHold",
+                xmlName: "LegalHold",
+                type: {
+                    name: "Boolean"
+                }
             }
         }
     }
 };
-var ContainerItem = {
-    xmlName: "Container",
-    serializedName: "ContainerItem",
+const ListBlobsHierarchySegmentResponse = {
+    serializedName: "ListBlobsHierarchySegmentResponse",
+    xmlName: "EnumerationResults",
     type: {
         name: "Composite",
-        className: "ContainerItem",
+        className: "ListBlobsHierarchySegmentResponse",
         modelProperties: {
-            name: {
-                xmlName: "Name",
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
                 required: true,
-                serializedName: "Name",
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
-            deleted: {
-                xmlName: "Deleted",
-                serializedName: "Deleted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            version: {
-                xmlName: "Version",
-                serializedName: "Version",
+            containerName: {
+                serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
-            properties: {
-                xmlName: "Properties",
-                required: true,
-                serializedName: "Properties",
+            prefix: {
+                serializedName: "Prefix",
+                xmlName: "Prefix",
+                type: {
+                    name: "String"
+                }
+            },
+            marker: {
+                serializedName: "Marker",
+                xmlName: "Marker",
+                type: {
+                    name: "String"
+                }
+            },
+            maxPageSize: {
+                serializedName: "MaxResults",
+                xmlName: "MaxResults",
+                type: {
+                    name: "Number"
+                }
+            },
+            delimiter: {
+                serializedName: "Delimiter",
+                xmlName: "Delimiter",
+                type: {
+                    name: "String"
+                }
+            },
+            segment: {
+                serializedName: "Segment",
+                xmlName: "Blobs",
                 type: {
                     name: "Composite",
-                    className: "ContainerProperties"
+                    className: "BlobHierarchyListSegment"
                 }
             },
-            metadata: {
-                xmlName: "Metadata",
-                serializedName: "Metadata",
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
                 type: {
-                    name: "Dictionary",
-                    value: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobHierarchyListSegment = {
+    serializedName: "BlobHierarchyListSegment",
+    xmlName: "Blobs",
+    type: {
+        name: "Composite",
+        className: "BlobHierarchyListSegment",
+        modelProperties: {
+            blobPrefixes: {
+                serializedName: "BlobPrefixes",
+                xmlName: "BlobPrefixes",
+                xmlElementName: "BlobPrefix",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "BlobPrefix"
+                        }
+                    }
+                }
+            },
+            blobItems: {
+                serializedName: "BlobItems",
+                required: true,
+                xmlName: "BlobItems",
+                xmlElementName: "Blob",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "BlobItemInternal"
+                        }
+                    }
+                }
+            }
+        }
+    }
+};
+const BlobPrefix = {
+    serializedName: "BlobPrefix",
+    type: {
+        name: "Composite",
+        className: "BlobPrefix",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockLookupList = {
+    serializedName: "BlockLookupList",
+    xmlName: "BlockList",
+    type: {
+        name: "Composite",
+        className: "BlockLookupList",
+        modelProperties: {
+            committed: {
+                serializedName: "Committed",
+                xmlName: "Committed",
+                xmlElementName: "Committed",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "String"
+                        }
+                    }
+                }
+            },
+            uncommitted: {
+                serializedName: "Uncommitted",
+                xmlName: "Uncommitted",
+                xmlElementName: "Uncommitted",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "String"
+                        }
+                    }
+                }
+            },
+            latest: {
+                serializedName: "Latest",
+                xmlName: "Latest",
+                xmlElementName: "Latest",
+                type: {
+                    name: "Sequence",
+                    element: {
                         type: {
                             name: "String"
                         }
@@ -10795,316 +11212,63 @@ var ContainerItem = {
         }
     }
 };
-var DelimitedTextConfiguration = {
-    serializedName: "DelimitedTextConfiguration",
+const BlockList = {
+    serializedName: "BlockList",
     type: {
         name: "Composite",
-        className: "DelimitedTextConfiguration",
+        className: "BlockList",
         modelProperties: {
-            columnSeparator: {
-                xmlName: "ColumnSeparator",
-                required: true,
-                serializedName: "ColumnSeparator",
-                type: {
-                    name: "String"
-                }
-            },
-            fieldQuote: {
-                xmlName: "FieldQuote",
-                required: true,
-                serializedName: "FieldQuote",
-                type: {
-                    name: "String"
-                }
-            },
-            recordSeparator: {
-                xmlName: "RecordSeparator",
-                required: true,
-                serializedName: "RecordSeparator",
-                type: {
-                    name: "String"
-                }
-            },
-            escapeChar: {
-                xmlName: "EscapeChar",
-                required: true,
-                serializedName: "EscapeChar",
-                type: {
-                    name: "String"
-                }
-            },
-            headersPresent: {
-                xmlName: "HasHeaders",
-                required: true,
-                serializedName: "HeadersPresent",
-                type: {
-                    name: "Boolean"
-                }
-            }
-        }
-    }
-};
-var JsonTextConfiguration = {
-    serializedName: "JsonTextConfiguration",
-    type: {
-        name: "Composite",
-        className: "JsonTextConfiguration",
-        modelProperties: {
-            recordSeparator: {
-                xmlName: "RecordSeparator",
-                required: true,
-                serializedName: "RecordSeparator",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var ListContainersSegmentResponse = {
-    xmlName: "EnumerationResults",
-    serializedName: "ListContainersSegmentResponse",
-    type: {
-        name: "Composite",
-        className: "ListContainersSegmentResponse",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            prefix: {
-                xmlName: "Prefix",
-                serializedName: "Prefix",
-                type: {
-                    name: "String"
-                }
-            },
-            marker: {
-                xmlName: "Marker",
-                serializedName: "Marker",
-                type: {
-                    name: "String"
-                }
-            },
-            maxPageSize: {
-                xmlName: "MaxResults",
-                serializedName: "MaxResults",
-                type: {
-                    name: "Number"
-                }
-            },
-            containerItems: {
+            committedBlocks: {
+                serializedName: "CommittedBlocks",
+                xmlName: "CommittedBlocks",
                 xmlIsWrapped: true,
-                xmlName: "Containers",
-                xmlElementName: "Container",
-                required: true,
-                serializedName: "ContainerItems",
+                xmlElementName: "Block",
                 type: {
                     name: "Sequence",
                     element: {
                         type: {
                             name: "Composite",
-                            className: "ContainerItem"
+                            className: "Block"
                         }
                     }
                 }
             },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
+            uncommittedBlocks: {
+                serializedName: "UncommittedBlocks",
+                xmlName: "UncommittedBlocks",
+                xmlIsWrapped: true,
+                xmlElementName: "Block",
                 type: {
-                    name: "String"
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "Block"
+                        }
+                    }
                 }
             }
         }
     }
 };
-var CorsRule = {
-    serializedName: "CorsRule",
+const Block = {
+    serializedName: "Block",
     type: {
         name: "Composite",
-        className: "CorsRule",
-        modelProperties: {
-            allowedOrigins: {
-                xmlName: "AllowedOrigins",
-                required: true,
-                serializedName: "AllowedOrigins",
-                type: {
-                    name: "String"
-                }
-            },
-            allowedMethods: {
-                xmlName: "AllowedMethods",
-                required: true,
-                serializedName: "AllowedMethods",
-                type: {
-                    name: "String"
-                }
-            },
-            allowedHeaders: {
-                xmlName: "AllowedHeaders",
-                required: true,
-                serializedName: "AllowedHeaders",
-                type: {
-                    name: "String"
-                }
-            },
-            exposedHeaders: {
-                xmlName: "ExposedHeaders",
-                required: true,
-                serializedName: "ExposedHeaders",
-                type: {
-                    name: "String"
-                }
-            },
-            maxAgeInSeconds: {
-                xmlName: "MaxAgeInSeconds",
-                required: true,
-                serializedName: "MaxAgeInSeconds",
-                constraints: {
-                    InclusiveMinimum: 0
-                },
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var FilterBlobItem = {
-    xmlName: "Blob",
-    serializedName: "FilterBlobItem",
-    type: {
-        name: "Composite",
-        className: "FilterBlobItem",
+        className: "Block",
         modelProperties: {
             name: {
-                xmlName: "Name",
-                required: true,
                 serializedName: "Name",
+                required: true,
+                xmlName: "Name",
                 type: {
                     name: "String"
                 }
             },
-            containerName: {
-                xmlName: "ContainerName",
+            size: {
+                serializedName: "Size",
                 required: true,
-                serializedName: "ContainerName",
-                type: {
-                    name: "String"
-                }
-            },
-            tagValue: {
-                xmlName: "TagValue",
-                required: true,
-                serializedName: "TagValue",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var FilterBlobSegment = {
-    xmlName: "EnumerationResults",
-    serializedName: "FilterBlobSegment",
-    type: {
-        name: "Composite",
-        className: "FilterBlobSegment",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            where: {
-                xmlName: "Where",
-                required: true,
-                serializedName: "Where",
-                type: {
-                    name: "String"
-                }
-            },
-            blobs: {
-                xmlIsWrapped: true,
-                xmlName: "Blobs",
-                xmlElementName: "Blob",
-                required: true,
-                serializedName: "Blobs",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "FilterBlobItem"
-                        }
-                    }
-                }
-            },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var GeoReplication = {
-    serializedName: "GeoReplication",
-    type: {
-        name: "Composite",
-        className: "GeoReplication",
-        modelProperties: {
-            status: {
-                xmlName: "Status",
-                required: true,
-                serializedName: "Status",
-                type: {
-                    name: "String"
-                }
-            },
-            lastSyncOn: {
-                xmlName: "LastSyncTime",
-                required: true,
-                serializedName: "LastSyncTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            }
-        }
-    }
-};
-var RetentionPolicy = {
-    serializedName: "RetentionPolicy",
-    type: {
-        name: "Composite",
-        className: "RetentionPolicy",
-        modelProperties: {
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            days: {
-                xmlName: "Days",
-                serializedName: "Days",
-                constraints: {
-                    InclusiveMinimum: 1
-                },
+                xmlName: "Size",
                 type: {
                     name: "Number"
                 }
@@ -11112,155 +11276,16 @@ var RetentionPolicy = {
         }
     }
 };
-var Logging = {
-    serializedName: "Logging",
-    type: {
-        name: "Composite",
-        className: "Logging",
-        modelProperties: {
-            version: {
-                xmlName: "Version",
-                required: true,
-                serializedName: "Version",
-                type: {
-                    name: "String"
-                }
-            },
-            deleteProperty: {
-                xmlName: "Delete",
-                required: true,
-                serializedName: "Delete",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            read: {
-                xmlName: "Read",
-                required: true,
-                serializedName: "Read",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            write: {
-                xmlName: "Write",
-                required: true,
-                serializedName: "Write",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            retentionPolicy: {
-                xmlName: "RetentionPolicy",
-                required: true,
-                serializedName: "RetentionPolicy",
-                type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
-                }
-            }
-        }
-    }
-};
-var Metrics = {
-    serializedName: "Metrics",
-    type: {
-        name: "Composite",
-        className: "Metrics",
-        modelProperties: {
-            version: {
-                xmlName: "Version",
-                serializedName: "Version",
-                type: {
-                    name: "String"
-                }
-            },
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            includeAPIs: {
-                xmlName: "IncludeAPIs",
-                serializedName: "IncludeAPIs",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            retentionPolicy: {
-                xmlName: "RetentionPolicy",
-                serializedName: "RetentionPolicy",
-                type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
-                }
-            }
-        }
-    }
-};
-var PageRange = {
-    serializedName: "PageRange",
-    type: {
-        name: "Composite",
-        className: "PageRange",
-        modelProperties: {
-            start: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
-                type: {
-                    name: "Number"
-                }
-            },
-            end: {
-                xmlName: "End",
-                required: true,
-                serializedName: "End",
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var ClearRange = {
-    serializedName: "ClearRange",
-    type: {
-        name: "Composite",
-        className: "ClearRange",
-        modelProperties: {
-            start: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
-                type: {
-                    name: "Number"
-                }
-            },
-            end: {
-                xmlName: "End",
-                required: true,
-                serializedName: "End",
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var PageList = {
+const PageList = {
     serializedName: "PageList",
     type: {
         name: "Composite",
         className: "PageList",
         modelProperties: {
             pageRange: {
+                serializedName: "PageRange",
                 xmlName: "PageRange",
                 xmlElementName: "PageRange",
-                serializedName: "PageRange",
                 type: {
                     name: "Sequence",
                     element: {
@@ -11272,9 +11297,9 @@ var PageList = {
                 }
             },
             clearRange: {
+                serializedName: "ClearRange",
                 xmlName: "ClearRange",
                 xmlElementName: "ClearRange",
-                serializedName: "ClearRange",
                 type: {
                     name: "Sequence",
                     element: {
@@ -11288,52 +11313,109 @@ var PageList = {
         }
     }
 };
-var QueryFormat = {
-    serializedName: "QueryFormat",
+const PageRange = {
+    serializedName: "PageRange",
+    xmlName: "PageRange",
     type: {
         name: "Composite",
-        className: "QueryFormat",
+        className: "PageRange",
         modelProperties: {
-            type: {
-                xmlName: "Type",
-                serializedName: "Type",
+            start: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "delimited",
-                        "json"
-                    ]
+                    name: "Number"
                 }
             },
-            delimitedTextConfiguration: {
-                xmlName: "DelimitedTextConfiguration",
-                serializedName: "DelimitedTextConfiguration",
+            end: {
+                serializedName: "End",
+                required: true,
+                xmlName: "End",
                 type: {
-                    name: "Composite",
-                    className: "DelimitedTextConfiguration"
-                }
-            },
-            jsonTextConfiguration: {
-                xmlName: "JsonTextConfiguration",
-                serializedName: "JsonTextConfiguration",
-                type: {
-                    name: "Composite",
-                    className: "JsonTextConfiguration"
+                    name: "Number"
                 }
             }
         }
     }
 };
-var QuerySerialization = {
+const ClearRange = {
+    serializedName: "ClearRange",
+    xmlName: "ClearRange",
+    type: {
+        name: "Composite",
+        className: "ClearRange",
+        modelProperties: {
+            start: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
+                type: {
+                    name: "Number"
+                }
+            },
+            end: {
+                serializedName: "End",
+                required: true,
+                xmlName: "End",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const QueryRequest = {
+    serializedName: "QueryRequest",
+    xmlName: "QueryRequest",
+    type: {
+        name: "Composite",
+        className: "QueryRequest",
+        modelProperties: {
+            queryType: {
+                serializedName: "QueryType",
+                required: true,
+                xmlName: "QueryType",
+                type: {
+                    name: "String"
+                }
+            },
+            expression: {
+                serializedName: "Expression",
+                required: true,
+                xmlName: "Expression",
+                type: {
+                    name: "String"
+                }
+            },
+            inputSerialization: {
+                serializedName: "InputSerialization",
+                xmlName: "InputSerialization",
+                type: {
+                    name: "Composite",
+                    className: "QuerySerialization"
+                }
+            },
+            outputSerialization: {
+                serializedName: "OutputSerialization",
+                xmlName: "OutputSerialization",
+                type: {
+                    name: "Composite",
+                    className: "QuerySerialization"
+                }
+            }
+        }
+    }
+};
+const QuerySerialization = {
     serializedName: "QuerySerialization",
     type: {
         name: "Composite",
         className: "QuerySerialization",
         modelProperties: {
             format: {
-                xmlName: "Format",
-                required: true,
                 serializedName: "Format",
+                xmlName: "Format",
                 type: {
                     name: "Composite",
                     className: "QueryFormat"
@@ -11342,106 +11424,110 @@ var QuerySerialization = {
         }
     }
 };
-var QueryRequest = {
-    serializedName: "QueryRequest",
+const QueryFormat = {
+    serializedName: "QueryFormat",
     type: {
         name: "Composite",
-        className: "QueryRequest",
+        className: "QueryFormat",
         modelProperties: {
-            queryType: {
-                xmlName: "QueryType",
+            type: {
+                serializedName: "Type",
                 required: true,
-                isConstant: true,
-                serializedName: "QueryType",
-                defaultValue: 'SQL',
+                xmlName: "Type",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["delimited", "json", "arrow", "parquet"]
                 }
             },
-            expression: {
-                xmlName: "Expression",
-                required: true,
-                serializedName: "Expression",
-                type: {
-                    name: "String"
-                }
-            },
-            inputSerialization: {
-                xmlName: "InputSerialization",
-                serializedName: "InputSerialization",
+            delimitedTextConfiguration: {
+                serializedName: "DelimitedTextConfiguration",
+                xmlName: "DelimitedTextConfiguration",
                 type: {
                     name: "Composite",
-                    className: "QuerySerialization"
+                    className: "DelimitedTextConfiguration"
                 }
             },
-            outputSerialization: {
-                xmlName: "OutputSerialization",
-                serializedName: "OutputSerialization",
+            jsonTextConfiguration: {
+                serializedName: "JsonTextConfiguration",
+                xmlName: "JsonTextConfiguration",
                 type: {
                     name: "Composite",
-                    className: "QuerySerialization"
+                    className: "JsonTextConfiguration"
+                }
+            },
+            arrowConfiguration: {
+                serializedName: "ArrowConfiguration",
+                xmlName: "ArrowConfiguration",
+                type: {
+                    name: "Composite",
+                    className: "ArrowConfiguration"
+                }
+            },
+            parquetTextConfiguration: {
+                serializedName: "ParquetTextConfiguration",
+                xmlName: "ParquetTextConfiguration",
+                type: {
+                    name: "any"
                 }
             }
         }
     }
 };
-var SignedIdentifier = {
-    serializedName: "SignedIdentifier",
+const DelimitedTextConfiguration = {
+    serializedName: "DelimitedTextConfiguration",
+    xmlName: "DelimitedTextConfiguration",
     type: {
         name: "Composite",
-        className: "SignedIdentifier",
+        className: "DelimitedTextConfiguration",
         modelProperties: {
-            id: {
-                xmlName: "Id",
-                required: true,
-                serializedName: "Id",
+            columnSeparator: {
+                serializedName: "ColumnSeparator",
+                xmlName: "ColumnSeparator",
                 type: {
                     name: "String"
                 }
             },
-            accessPolicy: {
-                xmlName: "AccessPolicy",
-                required: true,
-                serializedName: "AccessPolicy",
+            fieldQuote: {
+                serializedName: "FieldQuote",
+                xmlName: "FieldQuote",
                 type: {
-                    name: "Composite",
-                    className: "AccessPolicy"
+                    name: "String"
                 }
-            }
-        }
-    }
-};
-var StaticWebsite = {
-    serializedName: "StaticWebsite",
-    type: {
-        name: "Composite",
-        className: "StaticWebsite",
-        modelProperties: {
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
+            },
+            recordSeparator: {
+                serializedName: "RecordSeparator",
+                xmlName: "RecordSeparator",
+                type: {
+                    name: "String"
+                }
+            },
+            escapeChar: {
+                serializedName: "EscapeChar",
+                xmlName: "EscapeChar",
+                type: {
+                    name: "String"
+                }
+            },
+            headersPresent: {
+                serializedName: "HeadersPresent",
+                xmlName: "HasHeaders",
                 type: {
                     name: "Boolean"
                 }
-            },
-            indexDocument: {
-                xmlName: "IndexDocument",
-                serializedName: "IndexDocument",
-                type: {
-                    name: "String"
-                }
-            },
-            errorDocument404Path: {
-                xmlName: "ErrorDocument404Path",
-                serializedName: "ErrorDocument404Path",
-                type: {
-                    name: "String"
-                }
-            },
-            defaultIndexDocumentPath: {
-                xmlName: "DefaultIndexDocumentPath",
-                serializedName: "DefaultIndexDocumentPath",
+            }
+        }
+    }
+};
+const JsonTextConfiguration = {
+    serializedName: "JsonTextConfiguration",
+    xmlName: "JsonTextConfiguration",
+    type: {
+        name: "Composite",
+        className: "JsonTextConfiguration",
+        modelProperties: {
+            recordSeparator: {
+                serializedName: "RecordSeparator",
+                xmlName: "RecordSeparator",
                 type: {
                     name: "String"
                 }
@@ -11449,122 +11535,101 @@ var StaticWebsite = {
         }
     }
 };
-var BlobServiceProperties = {
-    xmlName: "StorageServiceProperties",
-    serializedName: "BlobServiceProperties",
+const ArrowConfiguration = {
+    serializedName: "ArrowConfiguration",
+    xmlName: "ArrowConfiguration",
     type: {
         name: "Composite",
-        className: "BlobServiceProperties",
+        className: "ArrowConfiguration",
         modelProperties: {
-            blobAnalyticsLogging: {
-                xmlName: "Logging",
-                serializedName: "Logging",
-                type: {
-                    name: "Composite",
-                    className: "Logging"
-                }
-            },
-            hourMetrics: {
-                xmlName: "HourMetrics",
-                serializedName: "HourMetrics",
-                type: {
-                    name: "Composite",
-                    className: "Metrics"
-                }
-            },
-            minuteMetrics: {
-                xmlName: "MinuteMetrics",
-                serializedName: "MinuteMetrics",
-                type: {
-                    name: "Composite",
-                    className: "Metrics"
-                }
-            },
-            cors: {
+            schema: {
+                serializedName: "Schema",
+                required: true,
+                xmlName: "Schema",
                 xmlIsWrapped: true,
-                xmlName: "Cors",
-                xmlElementName: "CorsRule",
-                serializedName: "Cors",
+                xmlElementName: "Field",
                 type: {
                     name: "Sequence",
                     element: {
                         type: {
                             name: "Composite",
-                            className: "CorsRule"
+                            className: "ArrowField"
                         }
                     }
                 }
-            },
-            defaultServiceVersion: {
-                xmlName: "DefaultServiceVersion",
-                serializedName: "DefaultServiceVersion",
+            }
+        }
+    }
+};
+const ArrowField = {
+    serializedName: "ArrowField",
+    xmlName: "Field",
+    type: {
+        name: "Composite",
+        className: "ArrowField",
+        modelProperties: {
+            type: {
+                serializedName: "Type",
+                required: true,
+                xmlName: "Type",
                 type: {
                     name: "String"
                 }
             },
-            deleteRetentionPolicy: {
-                xmlName: "DeleteRetentionPolicy",
-                serializedName: "DeleteRetentionPolicy",
+            name: {
+                serializedName: "Name",
+                xmlName: "Name",
                 type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
+                    name: "String"
                 }
             },
-            staticWebsite: {
-                xmlName: "StaticWebsite",
-                serializedName: "StaticWebsite",
+            precision: {
+                serializedName: "Precision",
+                xmlName: "Precision",
                 type: {
-                    name: "Composite",
-                    className: "StaticWebsite"
+                    name: "Number"
+                }
+            },
+            scale: {
+                serializedName: "Scale",
+                xmlName: "Scale",
+                type: {
+                    name: "Number"
                 }
             }
         }
     }
 };
-var BlobServiceStatistics = {
-    xmlName: "StorageServiceStats",
-    serializedName: "BlobServiceStatistics",
-    type: {
-        name: "Composite",
-        className: "BlobServiceStatistics",
-        modelProperties: {
-            geoReplication: {
-                xmlName: "GeoReplication",
-                serializedName: "GeoReplication",
-                type: {
-                    name: "Composite",
-                    className: "GeoReplication"
-                }
-            }
-        }
-    }
-};
-var ServiceSetPropertiesHeaders = {
-    serializedName: "service-setproperties-headers",
+const ServiceSetPropertiesHeaders = {
+    serializedName: "Service_setPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ServiceSetPropertiesHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11572,32 +11637,52 @@ var ServiceSetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetPropertiesHeaders = {
-    serializedName: "service-getproperties-headers",
+const ServiceSetPropertiesExceptionHeaders = {
+    serializedName: "Service_setPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceSetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetPropertiesHeaders = {
+    serializedName: "Service_getPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetPropertiesHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11605,38 +11690,59 @@ var ServiceGetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetStatisticsHeaders = {
-    serializedName: "service-getstatistics-headers",
+const ServiceGetPropertiesExceptionHeaders = {
+    serializedName: "Service_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetStatisticsHeaders = {
+    serializedName: "Service_getStatisticsHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetStatisticsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11644,32 +11750,52 @@ var ServiceGetStatisticsHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentHeaders = {
-    serializedName: "service-listcontainerssegment-headers",
+const ServiceGetStatisticsExceptionHeaders = {
+    serializedName: "Service_getStatisticsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetStatisticsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceListContainersSegmentHeaders = {
+    serializedName: "Service_listContainersSegmentHeaders",
     type: {
         name: "Composite",
         className: "ServiceListContainersSegmentHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11677,38 +11803,59 @@ var ServiceListContainersSegmentHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyHeaders = {
-    serializedName: "service-getuserdelegationkey-headers",
+const ServiceListContainersSegmentExceptionHeaders = {
+    serializedName: "Service_listContainersSegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceListContainersSegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetUserDelegationKeyHeaders = {
+    serializedName: "Service_getUserDelegationKeyHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetUserDelegationKeyHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11716,38 +11863,59 @@ var ServiceGetUserDelegationKeyHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoHeaders = {
-    serializedName: "service-getaccountinfo-headers",
+const ServiceGetUserDelegationKeyExceptionHeaders = {
+    serializedName: "Service_getUserDelegationKeyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetUserDelegationKeyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetAccountInfoHeaders = {
+    serializedName: "Service_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11761,6 +11929,7 @@ var ServiceGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11772,8 +11941,16 @@ var ServiceGetAccountInfoHeaders = {
                     ]
                 }
             },
+            isHierarchicalNamespaceEnabled: {
+                serializedName: "x-ms-is-hns-enabled",
+                xmlName: "x-ms-is-hns-enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11781,38 +11958,59 @@ var ServiceGetAccountInfoHeaders = {
         }
     }
 };
-var ServiceSubmitBatchHeaders = {
-    serializedName: "service-submitbatch-headers",
+const ServiceGetAccountInfoExceptionHeaders = {
+    serializedName: "Service_getAccountInfoExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetAccountInfoExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceSubmitBatchHeaders = {
+    serializedName: "Service_submitBatchHeaders",
     type: {
         name: "Composite",
         className: "ServiceSubmitBatchHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11820,38 +12018,59 @@ var ServiceSubmitBatchHeaders = {
         }
     }
 };
-var ServiceFilterBlobsHeaders = {
-    serializedName: "service-filterblobs-headers",
+const ServiceSubmitBatchExceptionHeaders = {
+    serializedName: "Service_submitBatchExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceSubmitBatchExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceFilterBlobsHeaders = {
+    serializedName: "Service_filterBlobsHeaders",
     type: {
         name: "Composite",
         className: "ServiceFilterBlobsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11859,50 +12078,73 @@ var ServiceFilterBlobsHeaders = {
         }
     }
 };
-var ContainerCreateHeaders = {
-    serializedName: "container-create-headers",
+const ServiceFilterBlobsExceptionHeaders = {
+    serializedName: "Service_filterBlobsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceFilterBlobsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerCreateHeaders = {
+    serializedName: "Container_createHeaders",
     type: {
         name: "Composite",
         className: "ContainerCreateHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11910,48 +12152,62 @@ var ContainerCreateHeaders = {
         }
     }
 };
-var ContainerGetPropertiesHeaders = {
-    serializedName: "container-getproperties-headers",
+const ContainerCreateExceptionHeaders = {
+    serializedName: "Container_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetPropertiesHeaders = {
+    serializedName: "Container_getPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetPropertiesHeaders",
         modelProperties: {
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-meta-"
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11965,70 +12221,86 @@ var ContainerGetPropertiesHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobPublicAccess: {
                 serializedName: "x-ms-blob-public-access",
+                xmlName: "x-ms-blob-public-access",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["container", "blob"]
                 }
             },
             hasImmutabilityPolicy: {
                 serializedName: "x-ms-has-immutability-policy",
+                xmlName: "x-ms-has-immutability-policy",
                 type: {
                     name: "Boolean"
                 }
             },
             hasLegalHold: {
                 serializedName: "x-ms-has-legal-hold",
+                xmlName: "x-ms-has-legal-hold",
                 type: {
                     name: "Boolean"
                 }
             },
             defaultEncryptionScope: {
                 serializedName: "x-ms-default-encryption-scope",
+                xmlName: "x-ms-default-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             denyEncryptionScopeOverride: {
                 serializedName: "x-ms-deny-encryption-scope-override",
+                xmlName: "x-ms-deny-encryption-scope-override",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            isImmutableStorageWithVersioningEnabled: {
+                serializedName: "x-ms-immutable-storage-with-versioning-enabled",
+                xmlName: "x-ms-immutable-storage-with-versioning-enabled",
                 type: {
                     name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12036,38 +12308,59 @@ var ContainerGetPropertiesHeaders = {
         }
     }
 };
-var ContainerDeleteHeaders = {
-    serializedName: "container-delete-headers",
+const ContainerGetPropertiesExceptionHeaders = {
+    serializedName: "Container_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerDeleteHeaders = {
+    serializedName: "Container_deleteHeaders",
     type: {
         name: "Composite",
         className: "ContainerDeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12075,50 +12368,73 @@ var ContainerDeleteHeaders = {
         }
     }
 };
-var ContainerSetMetadataHeaders = {
-    serializedName: "container-setmetadata-headers",
+const ContainerDeleteExceptionHeaders = {
+    serializedName: "Container_deleteExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerDeleteExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSetMetadataHeaders = {
+    serializedName: "Container_setMetadataHeaders",
     type: {
         name: "Composite",
         className: "ContainerSetMetadataHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12126,56 +12442,81 @@ var ContainerSetMetadataHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyHeaders = {
-    serializedName: "container-getaccesspolicy-headers",
+const ContainerSetMetadataExceptionHeaders = {
+    serializedName: "Container_setMetadataExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSetMetadataExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetAccessPolicyHeaders = {
+    serializedName: "Container_getAccessPolicyHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetAccessPolicyHeaders",
         modelProperties: {
             blobPublicAccess: {
                 serializedName: "x-ms-blob-public-access",
+                xmlName: "x-ms-blob-public-access",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["container", "blob"]
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12183,50 +12524,73 @@ var ContainerGetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyHeaders = {
-    serializedName: "container-setaccesspolicy-headers",
+const ContainerGetAccessPolicyExceptionHeaders = {
+    serializedName: "Container_getAccessPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetAccessPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSetAccessPolicyHeaders = {
+    serializedName: "Container_setAccessPolicyHeaders",
     type: {
         name: "Composite",
         className: "ContainerSetAccessPolicyHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12234,38 +12598,59 @@ var ContainerSetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerRestoreHeaders = {
-    serializedName: "container-restore-headers",
+const ContainerSetAccessPolicyExceptionHeaders = {
+    serializedName: "Container_setAccessPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSetAccessPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRestoreHeaders = {
+    serializedName: "Container_restoreHeaders",
     type: {
         name: "Composite",
         className: "ContainerRestoreHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12273,56 +12658,195 @@ var ContainerRestoreHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseHeaders = {
-    serializedName: "container-acquirelease-headers",
+const ContainerRestoreExceptionHeaders = {
+    serializedName: "Container_restoreExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRestoreExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRenameHeaders = {
+    serializedName: "Container_renameHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenameHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRenameExceptionHeaders = {
+    serializedName: "Container_renameExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenameExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSubmitBatchHeaders = {
+    serializedName: "Container_submitBatchHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSubmitBatchHeaders",
+        modelProperties: {
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSubmitBatchExceptionHeaders = {
+    serializedName: "Container_submitBatchExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSubmitBatchExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerAcquireLeaseHeaders = {
+    serializedName: "Container_acquireLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerAcquireLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerAcquireLeaseExceptionHeaders = {
+    serializedName: "Container_acquireLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerAcquireLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12330,50 +12854,66 @@ var ContainerAcquireLeaseHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseHeaders = {
-    serializedName: "container-releaselease-headers",
+const ContainerReleaseLeaseHeaders = {
+    serializedName: "Container_releaseLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerReleaseLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerReleaseLeaseExceptionHeaders = {
+    serializedName: "Container_releaseLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerReleaseLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12381,56 +12921,73 @@ var ContainerReleaseLeaseHeaders = {
         }
     }
 };
-var ContainerRenewLeaseHeaders = {
-    serializedName: "container-renewlease-headers",
+const ContainerRenewLeaseHeaders = {
+    serializedName: "Container_renewLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerRenewLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerRenewLeaseExceptionHeaders = {
+    serializedName: "Container_renewLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenewLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12438,56 +12995,73 @@ var ContainerRenewLeaseHeaders = {
         }
     }
 };
-var ContainerBreakLeaseHeaders = {
-    serializedName: "container-breaklease-headers",
+const ContainerBreakLeaseHeaders = {
+    serializedName: "Container_breakLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerBreakLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseTime: {
                 serializedName: "x-ms-lease-time",
+                xmlName: "x-ms-lease-time",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerBreakLeaseExceptionHeaders = {
+    serializedName: "Container_breakLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerBreakLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12495,56 +13069,73 @@ var ContainerBreakLeaseHeaders = {
         }
     }
 };
-var ContainerChangeLeaseHeaders = {
-    serializedName: "container-changelease-headers",
+const ContainerChangeLeaseHeaders = {
+    serializedName: "Container_changeLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerChangeLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerChangeLeaseExceptionHeaders = {
+    serializedName: "Container_changeLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerChangeLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12552,44 +13143,50 @@ var ContainerChangeLeaseHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentHeaders = {
-    serializedName: "container-listblobflatsegment-headers",
+const ContainerListBlobFlatSegmentHeaders = {
+    serializedName: "Container_listBlobFlatSegmentHeaders",
     type: {
         name: "Composite",
         className: "ContainerListBlobFlatSegmentHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12597,44 +13194,66 @@ var ContainerListBlobFlatSegmentHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentHeaders = {
-    serializedName: "container-listblobhierarchysegment-headers",
+const ContainerListBlobFlatSegmentExceptionHeaders = {
+    serializedName: "Container_listBlobFlatSegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerListBlobFlatSegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerListBlobHierarchySegmentHeaders = {
+    serializedName: "Container_listBlobHierarchySegmentHeaders",
     type: {
         name: "Composite",
         className: "ContainerListBlobHierarchySegmentHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12642,38 +13261,59 @@ var ContainerListBlobHierarchySegmentHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoHeaders = {
-    serializedName: "container-getaccountinfo-headers",
+const ContainerListBlobHierarchySegmentExceptionHeaders = {
+    serializedName: "Container_listBlobHierarchySegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerListBlobHierarchySegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetAccountInfoHeaders = {
+    serializedName: "Container_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12687,6 +13327,7 @@ var ContainerGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12697,9 +13338,19 @@ var ContainerGetAccountInfoHeaders = {
                         "BlockBlobStorage"
                     ]
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerGetAccountInfoExceptionHeaders = {
+    serializedName: "Container_getAccountInfoExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetAccountInfoExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12707,173 +13358,176 @@ var ContainerGetAccountInfoHeaders = {
         }
     }
 };
-var BlobDownloadHeaders = {
-    serializedName: "blob-download-headers",
+const BlobDownloadHeaders = {
+    serializedName: "Blob_downloadHeaders",
     type: {
         name: "Composite",
         className: "BlobDownloadHeaders",
         modelProperties: {
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-meta-"
             },
             objectReplicationPolicyId: {
                 serializedName: "x-ms-or-policy-id",
+                xmlName: "x-ms-or-policy-id",
                 type: {
                     name: "String"
                 }
             },
             objectReplicationRules: {
                 serializedName: "x-ms-or",
+                xmlName: "x-ms-or",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-or-"
             },
             contentLength: {
                 serializedName: "content-length",
+                xmlName: "content-length",
                 type: {
                     name: "Number"
                 }
             },
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             contentRange: {
                 serializedName: "content-range",
+                xmlName: "content-range",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             contentEncoding: {
                 serializedName: "content-encoding",
+                xmlName: "content-encoding",
                 type: {
                     name: "String"
                 }
             },
             cacheControl: {
                 serializedName: "cache-control",
+                xmlName: "cache-control",
                 type: {
                     name: "String"
                 }
             },
             contentDisposition: {
                 serializedName: "content-disposition",
+                xmlName: "content-disposition",
                 type: {
                     name: "String"
                 }
             },
             contentLanguage: {
                 serializedName: "content-language",
+                xmlName: "content-language",
                 type: {
                     name: "String"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             blobType: {
                 serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
                 }
             },
             copyCompletedOn: {
                 serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyStatusDescription: {
                 serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
                 type: {
                     name: "String"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyProgress: {
                 serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
                 type: {
                     name: "String"
                 }
             },
             copySource: {
                 serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12887,423 +13541,541 @@ var BlobDownloadHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            acceptRanges: {
-                serializedName: "accept-ranges",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentMD5: {
-                serializedName: "x-ms-blob-content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            tagCount: {
-                serializedName: "x-ms-tag-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isSealed: {
-                serializedName: "x-ms-blob-sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            contentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobGetPropertiesHeaders = {
-    serializedName: "blob-getproperties-headers",
-    type: {
-        name: "Composite",
-        className: "BlobGetPropertiesHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            createdOn: {
-                serializedName: "x-ms-creation-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            metadata: {
-                serializedName: "x-ms-meta",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-meta-"
-            },
-            objectReplicationPolicyId: {
-                serializedName: "x-ms-or-policy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            objectReplicationRules: {
-                serializedName: "x-ms-or",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-or-"
-            },
-            blobType: {
-                serializedName: "x-ms-blob-type",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
-                }
-            },
-            copyCompletedOn: {
-                serializedName: "x-ms-copy-completion-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyStatusDescription: {
-                serializedName: "x-ms-copy-status-description",
-                type: {
-                    name: "String"
-                }
-            },
-            copyId: {
-                serializedName: "x-ms-copy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            copyProgress: {
-                serializedName: "x-ms-copy-progress",
-                type: {
-                    name: "String"
-                }
-            },
-            copySource: {
-                serializedName: "x-ms-copy-source",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                serializedName: "x-ms-copy-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
-                }
-            },
-            isIncrementalCopy: {
-                serializedName: "x-ms-incremental-copy",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            destinationSnapshot: {
-                serializedName: "x-ms-copy-destination-snapshot",
-                type: {
-                    name: "String"
-                }
-            },
-            leaseDuration: {
-                serializedName: "x-ms-lease-duration",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
-                }
-            },
-            leaseState: {
-                serializedName: "x-ms-lease-state",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "available",
-                        "leased",
-                        "expired",
-                        "breaking",
-                        "broken"
-                    ]
-                }
-            },
-            leaseStatus: {
-                serializedName: "x-ms-lease-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
-                }
-            },
-            contentLength: {
-                serializedName: "content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            contentType: {
-                serializedName: "content-type",
-                type: {
-                    name: "String"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentEncoding: {
-                serializedName: "content-encoding",
-                type: {
-                    name: "String"
-                }
-            },
-            contentDisposition: {
-                serializedName: "content-disposition",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLanguage: {
-                serializedName: "content-language",
-                type: {
-                    name: "String"
-                }
-            },
-            cacheControl: {
-                serializedName: "cache-control",
-                type: {
-                    name: "String"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            acceptRanges: {
-                serializedName: "accept-ranges",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTier: {
-                serializedName: "x-ms-access-tier",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierInferred: {
-                serializedName: "x-ms-access-tier-inferred",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            archiveStatus: {
-                serializedName: "x-ms-archive-status",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierChangedOn: {
-                serializedName: "x-ms-access-tier-change-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             isCurrentVersion: {
                 serializedName: "x-ms-is-current-version",
+                xmlName: "x-ms-is-current-version",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            acceptRanges: {
+                serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentMD5: {
+                serializedName: "x-ms-blob-content-md5",
+                xmlName: "x-ms-blob-content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            tagCount: {
+                serializedName: "x-ms-tag-count",
+                xmlName: "x-ms-tag-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isSealed: {
+                serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            lastAccessed: {
+                serializedName: "x-ms-last-access-time",
+                xmlName: "x-ms-last-access-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            },
+            contentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            }
+        }
+    }
+};
+const BlobDownloadExceptionHeaders = {
+    serializedName: "Blob_downloadExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDownloadExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobGetPropertiesHeaders = {
+    serializedName: "Blob_getPropertiesHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetPropertiesHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            createdOn: {
+                serializedName: "x-ms-creation-time",
+                xmlName: "x-ms-creation-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            metadata: {
+                serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                },
+                headerCollectionPrefix: "x-ms-meta-"
+            },
+            objectReplicationPolicyId: {
+                serializedName: "x-ms-or-policy-id",
+                xmlName: "x-ms-or-policy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            objectReplicationRules: {
+                serializedName: "x-ms-or",
+                xmlName: "x-ms-or",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                },
+                headerCollectionPrefix: "x-ms-or-"
+            },
+            blobType: {
+                serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
+                }
+            },
+            copyCompletedOn: {
+                serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyStatusDescription: {
+                serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
+                type: {
+                    name: "String"
+                }
+            },
+            copyId: {
+                serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            copyProgress: {
+                serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
+                type: {
+                    name: "String"
+                }
+            },
+            copySource: {
+                serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
+                type: {
+                    name: "String"
+                }
+            },
+            copyStatus: {
+                serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
+                }
+            },
+            isIncrementalCopy: {
+                serializedName: "x-ms-incremental-copy",
+                xmlName: "x-ms-incremental-copy",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            destinationSnapshot: {
+                serializedName: "x-ms-copy-destination-snapshot",
+                xmlName: "x-ms-copy-destination-snapshot",
+                type: {
+                    name: "String"
+                }
+            },
+            leaseDuration: {
+                serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["infinite", "fixed"]
+                }
+            },
+            leaseState: {
+                serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "available",
+                        "leased",
+                        "expired",
+                        "breaking",
+                        "broken"
+                    ]
+                }
+            },
+            leaseStatus: {
+                serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["locked", "unlocked"]
+                }
+            },
+            contentLength: {
+                serializedName: "content-length",
+                xmlName: "content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            contentEncoding: {
+                serializedName: "content-encoding",
+                xmlName: "content-encoding",
+                type: {
+                    name: "String"
+                }
+            },
+            contentDisposition: {
+                serializedName: "content-disposition",
+                xmlName: "content-disposition",
+                type: {
+                    name: "String"
+                }
+            },
+            contentLanguage: {
+                serializedName: "content-language",
+                xmlName: "content-language",
+                type: {
+                    name: "String"
+                }
+            },
+            cacheControl: {
+                serializedName: "cache-control",
+                xmlName: "cache-control",
+                type: {
+                    name: "String"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            acceptRanges: {
+                serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTier: {
+                serializedName: "x-ms-access-tier",
+                xmlName: "x-ms-access-tier",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierInferred: {
+                serializedName: "x-ms-access-tier-inferred",
+                xmlName: "x-ms-access-tier-inferred",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            archiveStatus: {
+                serializedName: "x-ms-archive-status",
+                xmlName: "x-ms-archive-status",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierChangedOn: {
+                serializedName: "x-ms-access-tier-change-time",
+                xmlName: "x-ms-access-tier-change-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            isCurrentVersion: {
+                serializedName: "x-ms-is-current-version",
+                xmlName: "x-ms-is-current-version",
                 type: {
                     name: "Boolean"
                 }
             },
             tagCount: {
                 serializedName: "x-ms-tag-count",
+                xmlName: "x-ms-tag-count",
                 type: {
                     name: "Number"
                 }
             },
             expiresOn: {
                 serializedName: "x-ms-expiry-time",
+                xmlName: "x-ms-expiry-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isSealed: {
                 serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
                 type: {
                     name: "Boolean"
                 }
             },
             rehydratePriority: {
                 serializedName: "x-ms-rehydrate-priority",
+                xmlName: "x-ms-rehydrate-priority",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["High", "Standard"]
+                }
+            },
+            lastAccessed: {
+                serializedName: "x-ms-last-access-time",
+                xmlName: "x-ms-last-access-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13311,38 +14083,59 @@ var BlobGetPropertiesHeaders = {
         }
     }
 };
-var BlobDeleteHeaders = {
-    serializedName: "blob-delete-headers",
+const BlobGetPropertiesExceptionHeaders = {
+    serializedName: "Blob_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteHeaders = {
+    serializedName: "Blob_deleteHeaders",
     type: {
         name: "Composite",
         className: "BlobDeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13350,245 +14143,15 @@ var BlobDeleteHeaders = {
         }
     }
 };
-var BlobSetAccessControlHeaders = {
-    serializedName: "blob-setaccesscontrol-headers",
+const BlobDeleteExceptionHeaders = {
+    serializedName: "Blob_deleteExceptionHeaders",
     type: {
         name: "Composite",
-        className: "BlobSetAccessControlHeaders",
+        className: "BlobDeleteExceptionHeaders",
         modelProperties: {
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobGetAccessControlHeaders = {
-    serializedName: "blob-getaccesscontrol-headers",
-    type: {
-        name: "Composite",
-        className: "BlobGetAccessControlHeaders",
-        modelProperties: {
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            xMsOwner: {
-                serializedName: "x-ms-owner",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsGroup: {
-                serializedName: "x-ms-group",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsPermissions: {
-                serializedName: "x-ms-permissions",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsAcl: {
-                serializedName: "x-ms-acl",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobRenameHeaders = {
-    serializedName: "blob-rename-headers",
-    type: {
-        name: "Composite",
-        className: "BlobRenameHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLength: {
-                serializedName: "content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            }
-        }
-    }
-};
-var PageBlobCreateHeaders = {
-    serializedName: "pageblob-create-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobCreateHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13596,200 +14159,43 @@ var PageBlobCreateHeaders = {
         }
     }
 };
-var AppendBlobCreateHeaders = {
-    serializedName: "appendblob-create-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobCreateHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobUploadHeaders = {
-    serializedName: "blockblob-upload-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobUploadHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobUndeleteHeaders = {
-    serializedName: "blob-undelete-headers",
+const BlobUndeleteHeaders = {
+    serializedName: "Blob_undeleteHeaders",
     type: {
         name: "Composite",
         className: "BlobUndeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13797,50 +14203,82 @@ var BlobUndeleteHeaders = {
         }
     }
 };
-var BlobSetExpiryHeaders = {
-    serializedName: "blob-setexpiry-headers",
+const BlobUndeleteExceptionHeaders = {
+    serializedName: "Blob_undeleteExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobUndeleteExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetExpiryHeaders = {
+    serializedName: "Blob_setExpiryHeaders",
     type: {
         name: "Composite",
         className: "BlobSetExpiryHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobSetExpiryExceptionHeaders = {
+    serializedName: "Blob_setExpiryExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetExpiryExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13848,56 +14286,64 @@ var BlobSetExpiryHeaders = {
         }
     }
 };
-var BlobSetHTTPHeadersHeaders = {
-    serializedName: "blob-sethttpheaders-headers",
+const BlobSetHttpHeadersHeaders = {
+    serializedName: "Blob_setHttpHeadersHeaders",
     type: {
         name: "Composite",
-        className: "BlobSetHTTPHeadersHeaders",
+        className: "BlobSetHttpHeadersHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13905,74 +14351,282 @@ var BlobSetHTTPHeadersHeaders = {
         }
     }
 };
-var BlobSetMetadataHeaders = {
-    serializedName: "blob-setmetadata-headers",
+const BlobSetHttpHeadersExceptionHeaders = {
+    serializedName: "Blob_setHttpHeadersExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetHttpHeadersExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetImmutabilityPolicyHeaders = {
+    serializedName: "Blob_setImmutabilityPolicyHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetImmutabilityPolicyHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiry: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            }
+        }
+    }
+};
+const BlobSetImmutabilityPolicyExceptionHeaders = {
+    serializedName: "Blob_setImmutabilityPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetImmutabilityPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteImmutabilityPolicyHeaders = {
+    serializedName: "Blob_deleteImmutabilityPolicyHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDeleteImmutabilityPolicyHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteImmutabilityPolicyExceptionHeaders = {
+    serializedName: "Blob_deleteImmutabilityPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDeleteImmutabilityPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetLegalHoldHeaders = {
+    serializedName: "Blob_setLegalHoldHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetLegalHoldHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
+                }
+            }
+        }
+    }
+};
+const BlobSetLegalHoldExceptionHeaders = {
+    serializedName: "Blob_setLegalHoldExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetLegalHoldExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetMetadataHeaders = {
+    serializedName: "Blob_setMetadataHeaders",
     type: {
         name: "Composite",
         className: "BlobSetMetadataHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             encryptionKeySha256: {
                 serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
                 type: {
                     name: "String"
                 }
             },
             encryptionScope: {
                 serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13980,56 +14634,89 @@ var BlobSetMetadataHeaders = {
         }
     }
 };
-var BlobAcquireLeaseHeaders = {
-    serializedName: "blob-acquirelease-headers",
+const BlobSetMetadataExceptionHeaders = {
+    serializedName: "Blob_setMetadataExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetMetadataExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobAcquireLeaseHeaders = {
+    serializedName: "Blob_acquireLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobAcquireLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobAcquireLeaseExceptionHeaders = {
+    serializedName: "Blob_acquireLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobAcquireLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14037,50 +14724,66 @@ var BlobAcquireLeaseHeaders = {
         }
     }
 };
-var BlobReleaseLeaseHeaders = {
-    serializedName: "blob-releaselease-headers",
+const BlobReleaseLeaseHeaders = {
+    serializedName: "Blob_releaseLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobReleaseLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobReleaseLeaseExceptionHeaders = {
+    serializedName: "Blob_releaseLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobReleaseLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14088,56 +14791,73 @@ var BlobReleaseLeaseHeaders = {
         }
     }
 };
-var BlobRenewLeaseHeaders = {
-    serializedName: "blob-renewlease-headers",
+const BlobRenewLeaseHeaders = {
+    serializedName: "Blob_renewLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobRenewLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobRenewLeaseExceptionHeaders = {
+    serializedName: "Blob_renewLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobRenewLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14145,56 +14865,73 @@ var BlobRenewLeaseHeaders = {
         }
     }
 };
-var BlobChangeLeaseHeaders = {
-    serializedName: "blob-changelease-headers",
+const BlobChangeLeaseHeaders = {
+    serializedName: "Blob_changeLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobChangeLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobChangeLeaseExceptionHeaders = {
+    serializedName: "Blob_changeLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobChangeLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14202,56 +14939,73 @@ var BlobChangeLeaseHeaders = {
         }
     }
 };
-var BlobBreakLeaseHeaders = {
-    serializedName: "blob-breaklease-headers",
+const BlobBreakLeaseHeaders = {
+    serializedName: "Blob_breakLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobBreakLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseTime: {
                 serializedName: "x-ms-lease-time",
+                xmlName: "x-ms-lease-time",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobBreakLeaseExceptionHeaders = {
+    serializedName: "Blob_breakLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobBreakLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14259,68 +15013,78 @@ var BlobBreakLeaseHeaders = {
         }
     }
 };
-var BlobCreateSnapshotHeaders = {
-    serializedName: "blob-createsnapshot-headers",
+const BlobCreateSnapshotHeaders = {
+    serializedName: "Blob_createSnapshotHeaders",
     type: {
         name: "Composite",
         className: "BlobCreateSnapshotHeaders",
         modelProperties: {
             snapshot: {
                 serializedName: "x-ms-snapshot",
+                xmlName: "x-ms-snapshot",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14328,74 +15092,95 @@ var BlobCreateSnapshotHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLHeaders = {
-    serializedName: "blob-startcopyfromurl-headers",
+const BlobCreateSnapshotExceptionHeaders = {
+    serializedName: "Blob_createSnapshotExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobCreateSnapshotExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobStartCopyFromURLHeaders = {
+    serializedName: "Blob_startCopyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobStartCopyFromURLHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14403,83 +15188,109 @@ var BlobStartCopyFromURLHeaders = {
         }
     }
 };
-var BlobCopyFromURLHeaders = {
-    serializedName: "blob-copyfromurl-headers",
+const BlobStartCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_startCopyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobStartCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobCopyFromURLHeaders = {
+    serializedName: "Blob_copyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobCopyFromURLHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
+                defaultValue: "success",
+                isConstant: true,
                 serializedName: "x-ms-copy-status",
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "success"
-                    ]
+                    name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             xMsContentCrc64: {
                 serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
                 type: {
                     name: "ByteArray"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14487,38 +15298,59 @@ var BlobCopyFromURLHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLHeaders = {
-    serializedName: "blob-abortcopyfromurl-headers",
+const BlobCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_copyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobAbortCopyFromURLHeaders = {
+    serializedName: "Blob_abortCopyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobAbortCopyFromURLHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14526,32 +15358,52 @@ var BlobAbortCopyFromURLHeaders = {
         }
     }
 };
-var BlobSetTierHeaders = {
-    serializedName: "blob-settier-headers",
+const BlobAbortCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_abortCopyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobAbortCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTierHeaders = {
+    serializedName: "Blob_setTierHeaders",
     type: {
         name: "Composite",
         className: "BlobSetTierHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14559,38 +15411,59 @@ var BlobSetTierHeaders = {
         }
     }
 };
-var BlobGetAccountInfoHeaders = {
-    serializedName: "blob-getaccountinfo-headers",
+const BlobSetTierExceptionHeaders = {
+    serializedName: "Blob_setTierExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetTierExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobGetAccountInfoHeaders = {
+    serializedName: "Blob_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "BlobGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -14604,6 +15477,7 @@ var BlobGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -14614,78 +15488,19 @@ var BlobGetAccountInfoHeaders = {
                         "BlockBlobStorage"
                     ]
                 }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
             }
         }
     }
 };
-var BlockBlobStageBlockHeaders = {
-    serializedName: "blockblob-stageblock-headers",
+const BlobGetAccountInfoExceptionHeaders = {
+    serializedName: "Blob_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
-        className: "BlockBlobStageBlockHeaders",
+        className: "BlobGetAccountInfoExceptionHeaders",
         modelProperties: {
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14693,1145 +15508,159 @@ var BlockBlobStageBlockHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLHeaders = {
-    serializedName: "blockblob-stageblockfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobStageBlockFromURLHeaders",
-        modelProperties: {
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobCommitBlockListHeaders = {
-    serializedName: "blockblob-commitblocklist-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobCommitBlockListHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobGetBlockListHeaders = {
-    serializedName: "blockblob-getblocklist-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobGetBlockListHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            contentType: {
-                serializedName: "content-type",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUploadPagesHeaders = {
-    serializedName: "pageblob-uploadpages-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUploadPagesHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobClearPagesHeaders = {
-    serializedName: "pageblob-clearpages-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobClearPagesHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUploadPagesFromURLHeaders = {
-    serializedName: "pageblob-uploadpagesfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUploadPagesFromURLHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobGetPageRangesHeaders = {
-    serializedName: "pageblob-getpageranges-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobGetPageRangesHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobGetPageRangesDiffHeaders = {
-    serializedName: "pageblob-getpagerangesdiff-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobGetPageRangesDiffHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobResizeHeaders = {
-    serializedName: "pageblob-resize-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobResizeHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUpdateSequenceNumberHeaders = {
-    serializedName: "pageblob-updatesequencenumber-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUpdateSequenceNumberHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobCopyIncrementalHeaders = {
-    serializedName: "pageblob-copyincremental-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobCopyIncrementalHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyId: {
-                serializedName: "x-ms-copy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                serializedName: "x-ms-copy-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobAppendBlockHeaders = {
-    serializedName: "appendblob-appendblock-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobAppendBlockHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobAppendOffset: {
-                serializedName: "x-ms-blob-append-offset",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobAppendBlockFromUrlHeaders = {
-    serializedName: "appendblob-appendblockfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobAppendBlockFromUrlHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobAppendOffset: {
-                serializedName: "x-ms-blob-append-offset",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobSealHeaders = {
-    serializedName: "appendblob-seal-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobSealHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isSealed: {
-                serializedName: "x-ms-blob-sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobQueryHeaders = {
-    serializedName: "blob-query-headers",
+const BlobQueryHeaders = {
+    serializedName: "Blob_queryHeaders",
     type: {
         name: "Composite",
         className: "BlobQueryHeaders",
         modelProperties: {
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-meta-"
+                    value: { type: { name: "String" } }
+                }
             },
             contentLength: {
                 serializedName: "content-length",
+                xmlName: "content-length",
                 type: {
                     name: "Number"
                 }
             },
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             contentRange: {
                 serializedName: "content-range",
+                xmlName: "content-range",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             contentEncoding: {
                 serializedName: "content-encoding",
+                xmlName: "content-encoding",
                 type: {
                     name: "String"
                 }
             },
             cacheControl: {
                 serializedName: "cache-control",
+                xmlName: "cache-control",
                 type: {
                     name: "String"
                 }
             },
             contentDisposition: {
                 serializedName: "content-disposition",
+                xmlName: "content-disposition",
                 type: {
                     name: "String"
                 }
             },
             contentLanguage: {
                 serializedName: "content-language",
+                xmlName: "content-language",
                 type: {
                     name: "String"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             blobType: {
                 serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
                 }
             },
             copyCompletionTime: {
                 serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyStatusDescription: {
                 serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
                 type: {
                     name: "String"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyProgress: {
                 serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
                 type: {
                     name: "String"
                 }
             },
             copySource: {
                 serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -15845,82 +15674,108 @@ var BlobQueryHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             acceptRanges: {
                 serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobCommittedBlockCount: {
                 serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
                 type: {
                     name: "Number"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             encryptionKeySha256: {
                 serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
                 type: {
                     name: "String"
                 }
             },
             encryptionScope: {
                 serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             blobContentMD5: {
                 serializedName: "x-ms-blob-content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentCrc64: {
-                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-blob-content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            },
+            contentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            }
+        }
+    }
+};
+const BlobQueryExceptionHeaders = {
+    serializedName: "Blob_queryExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobQueryExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -15928,38 +15783,43 @@ var BlobQueryHeaders = {
         }
     }
 };
-var BlobGetTagsHeaders = {
-    serializedName: "blob-gettags-headers",
+const BlobGetTagsHeaders = {
+    serializedName: "Blob_getTagsHeaders",
     type: {
         name: "Composite",
         className: "BlobGetTagsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -15967,38 +15827,1951 @@ var BlobGetTagsHeaders = {
         }
     }
 };
-var BlobSetTagsHeaders = {
-    serializedName: "blob-settags-headers",
+const BlobGetTagsExceptionHeaders = {
+    serializedName: "Blob_getTagsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetTagsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTagsHeaders = {
+    serializedName: "Blob_setTagsHeaders",
     type: {
         name: "Composite",
         className: "BlobSetTagsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTagsExceptionHeaders = {
+    serializedName: "Blob_setTagsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetTagsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCreateHeaders = {
+    serializedName: "PageBlob_createHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCreateHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCreateExceptionHeaders = {
+    serializedName: "PageBlob_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesHeaders = {
+    serializedName: "PageBlob_uploadPagesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesExceptionHeaders = {
+    serializedName: "PageBlob_uploadPagesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobClearPagesHeaders = {
+    serializedName: "PageBlob_clearPagesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobClearPagesHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobClearPagesExceptionHeaders = {
+    serializedName: "PageBlob_clearPagesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobClearPagesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesFromURLHeaders = {
+    serializedName: "PageBlob_uploadPagesFromURLHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesFromURLHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesFromURLExceptionHeaders = {
+    serializedName: "PageBlob_uploadPagesFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesHeaders = {
+    serializedName: "PageBlob_getPageRangesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesExceptionHeaders = {
+    serializedName: "PageBlob_getPageRangesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesDiffHeaders = {
+    serializedName: "PageBlob_getPageRangesDiffHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesDiffHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesDiffExceptionHeaders = {
+    serializedName: "PageBlob_getPageRangesDiffExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesDiffExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobResizeHeaders = {
+    serializedName: "PageBlob_resizeHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobResizeHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobResizeExceptionHeaders = {
+    serializedName: "PageBlob_resizeExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobResizeExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUpdateSequenceNumberHeaders = {
+    serializedName: "PageBlob_updateSequenceNumberHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUpdateSequenceNumberHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUpdateSequenceNumberExceptionHeaders = {
+    serializedName: "PageBlob_updateSequenceNumberExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUpdateSequenceNumberExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCopyIncrementalHeaders = {
+    serializedName: "PageBlob_copyIncrementalHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCopyIncrementalHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyId: {
+                serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            copyStatus: {
+                serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCopyIncrementalExceptionHeaders = {
+    serializedName: "PageBlob_copyIncrementalExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCopyIncrementalExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobCreateHeaders = {
+    serializedName: "AppendBlob_createHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobCreateHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobCreateExceptionHeaders = {
+    serializedName: "AppendBlob_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockHeaders = {
+    serializedName: "AppendBlob_appendBlockHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobAppendOffset: {
+                serializedName: "x-ms-blob-append-offset",
+                xmlName: "x-ms-blob-append-offset",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockExceptionHeaders = {
+    serializedName: "AppendBlob_appendBlockExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockFromUrlHeaders = {
+    serializedName: "AppendBlob_appendBlockFromUrlHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockFromUrlHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobAppendOffset: {
+                serializedName: "x-ms-blob-append-offset",
+                xmlName: "x-ms-blob-append-offset",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockFromUrlExceptionHeaders = {
+    serializedName: "AppendBlob_appendBlockFromUrlExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockFromUrlExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobSealHeaders = {
+    serializedName: "AppendBlob_sealHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobSealHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isSealed: {
+                serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
+                type: {
+                    name: "Boolean"
+                }
+            }
+        }
+    }
+};
+const AppendBlobSealExceptionHeaders = {
+    serializedName: "AppendBlob_sealExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobSealExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobUploadHeaders = {
+    serializedName: "BlockBlob_uploadHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobUploadHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobUploadExceptionHeaders = {
+    serializedName: "BlockBlob_uploadExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobUploadExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobPutBlobFromUrlHeaders = {
+    serializedName: "BlockBlob_putBlobFromUrlHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobPutBlobFromUrlHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobPutBlobFromUrlExceptionHeaders = {
+    serializedName: "BlockBlob_putBlobFromUrlExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobPutBlobFromUrlExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockHeaders = {
+    serializedName: "BlockBlob_stageBlockHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockHeaders",
+        modelProperties: {
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockExceptionHeaders = {
+    serializedName: "BlockBlob_stageBlockExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockFromURLHeaders = {
+    serializedName: "BlockBlob_stageBlockFromURLHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockFromURLHeaders",
+        modelProperties: {
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockFromURLExceptionHeaders = {
+    serializedName: "BlockBlob_stageBlockFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobCommitBlockListHeaders = {
+    serializedName: "BlockBlob_commitBlockListHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobCommitBlockListHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobCommitBlockListExceptionHeaders = {
+    serializedName: "BlockBlob_commitBlockListExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobCommitBlockListExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobGetBlockListHeaders = {
+    serializedName: "BlockBlob_getBlockListHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobGetBlockListHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobGetBlockListExceptionHeaders = {
+    serializedName: "BlockBlob_getBlockListExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobGetBlockListExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -16007,715 +17780,497 @@ var BlobSetTagsHeaders = {
     }
 };
 
+var Mappers = /*#__PURE__*/Object.freeze({
+    __proto__: null,
+    BlobServiceProperties: BlobServiceProperties,
+    Logging: Logging,
+    RetentionPolicy: RetentionPolicy,
+    Metrics: Metrics,
+    CorsRule: CorsRule,
+    StaticWebsite: StaticWebsite,
+    StorageError: StorageError,
+    BlobServiceStatistics: BlobServiceStatistics,
+    GeoReplication: GeoReplication,
+    ListContainersSegmentResponse: ListContainersSegmentResponse,
+    ContainerItem: ContainerItem,
+    ContainerProperties: ContainerProperties,
+    KeyInfo: KeyInfo,
+    UserDelegationKey: UserDelegationKey,
+    FilterBlobSegment: FilterBlobSegment,
+    FilterBlobItem: FilterBlobItem,
+    BlobTags: BlobTags,
+    BlobTag: BlobTag,
+    SignedIdentifier: SignedIdentifier,
+    AccessPolicy: AccessPolicy,
+    ListBlobsFlatSegmentResponse: ListBlobsFlatSegmentResponse,
+    BlobFlatListSegment: BlobFlatListSegment,
+    BlobItemInternal: BlobItemInternal,
+    BlobPropertiesInternal: BlobPropertiesInternal,
+    ListBlobsHierarchySegmentResponse: ListBlobsHierarchySegmentResponse,
+    BlobHierarchyListSegment: BlobHierarchyListSegment,
+    BlobPrefix: BlobPrefix,
+    BlockLookupList: BlockLookupList,
+    BlockList: BlockList,
+    Block: Block,
+    PageList: PageList,
+    PageRange: PageRange,
+    ClearRange: ClearRange,
+    QueryRequest: QueryRequest,
+    QuerySerialization: QuerySerialization,
+    QueryFormat: QueryFormat,
+    DelimitedTextConfiguration: DelimitedTextConfiguration,
+    JsonTextConfiguration: JsonTextConfiguration,
+    ArrowConfiguration: ArrowConfiguration,
+    ArrowField: ArrowField,
+    ServiceSetPropertiesHeaders: ServiceSetPropertiesHeaders,
+    ServiceSetPropertiesExceptionHeaders: ServiceSetPropertiesExceptionHeaders,
+    ServiceGetPropertiesHeaders: ServiceGetPropertiesHeaders,
+    ServiceGetPropertiesExceptionHeaders: ServiceGetPropertiesExceptionHeaders,
+    ServiceGetStatisticsHeaders: ServiceGetStatisticsHeaders,
+    ServiceGetStatisticsExceptionHeaders: ServiceGetStatisticsExceptionHeaders,
+    ServiceListContainersSegmentHeaders: ServiceListContainersSegmentHeaders,
+    ServiceListContainersSegmentExceptionHeaders: ServiceListContainersSegmentExceptionHeaders,
+    ServiceGetUserDelegationKeyHeaders: ServiceGetUserDelegationKeyHeaders,
+    ServiceGetUserDelegationKeyExceptionHeaders: ServiceGetUserDelegationKeyExceptionHeaders,
+    ServiceGetAccountInfoHeaders: ServiceGetAccountInfoHeaders,
+    ServiceGetAccountInfoExceptionHeaders: ServiceGetAccountInfoExceptionHeaders,
+    ServiceSubmitBatchHeaders: ServiceSubmitBatchHeaders,
+    ServiceSubmitBatchExceptionHeaders: ServiceSubmitBatchExceptionHeaders,
+    ServiceFilterBlobsHeaders: ServiceFilterBlobsHeaders,
+    ServiceFilterBlobsExceptionHeaders: ServiceFilterBlobsExceptionHeaders,
+    ContainerCreateHeaders: ContainerCreateHeaders,
+    ContainerCreateExceptionHeaders: ContainerCreateExceptionHeaders,
+    ContainerGetPropertiesHeaders: ContainerGetPropertiesHeaders,
+    ContainerGetPropertiesExceptionHeaders: ContainerGetPropertiesExceptionHeaders,
+    ContainerDeleteHeaders: ContainerDeleteHeaders,
+    ContainerDeleteExceptionHeaders: ContainerDeleteExceptionHeaders,
+    ContainerSetMetadataHeaders: ContainerSetMetadataHeaders,
+    ContainerSetMetadataExceptionHeaders: ContainerSetMetadataExceptionHeaders,
+    ContainerGetAccessPolicyHeaders: ContainerGetAccessPolicyHeaders,
+    ContainerGetAccessPolicyExceptionHeaders: ContainerGetAccessPolicyExceptionHeaders,
+    ContainerSetAccessPolicyHeaders: ContainerSetAccessPolicyHeaders,
+    ContainerSetAccessPolicyExceptionHeaders: ContainerSetAccessPolicyExceptionHeaders,
+    ContainerRestoreHeaders: ContainerRestoreHeaders,
+    ContainerRestoreExceptionHeaders: ContainerRestoreExceptionHeaders,
+    ContainerRenameHeaders: ContainerRenameHeaders,
+    ContainerRenameExceptionHeaders: ContainerRenameExceptionHeaders,
+    ContainerSubmitBatchHeaders: ContainerSubmitBatchHeaders,
+    ContainerSubmitBatchExceptionHeaders: ContainerSubmitBatchExceptionHeaders,
+    ContainerAcquireLeaseHeaders: ContainerAcquireLeaseHeaders,
+    ContainerAcquireLeaseExceptionHeaders: ContainerAcquireLeaseExceptionHeaders,
+    ContainerReleaseLeaseHeaders: ContainerReleaseLeaseHeaders,
+    ContainerReleaseLeaseExceptionHeaders: ContainerReleaseLeaseExceptionHeaders,
+    ContainerRenewLeaseHeaders: ContainerRenewLeaseHeaders,
+    ContainerRenewLeaseExceptionHeaders: ContainerRenewLeaseExceptionHeaders,
+    ContainerBreakLeaseHeaders: ContainerBreakLeaseHeaders,
+    ContainerBreakLeaseExceptionHeaders: ContainerBreakLeaseExceptionHeaders,
+    ContainerChangeLeaseHeaders: ContainerChangeLeaseHeaders,
+    ContainerChangeLeaseExceptionHeaders: ContainerChangeLeaseExceptionHeaders,
+    ContainerListBlobFlatSegmentHeaders: ContainerListBlobFlatSegmentHeaders,
+    ContainerListBlobFlatSegmentExceptionHeaders: ContainerListBlobFlatSegmentExceptionHeaders,
+    ContainerListBlobHierarchySegmentHeaders: ContainerListBlobHierarchySegmentHeaders,
+    ContainerListBlobHierarchySegmentExceptionHeaders: ContainerListBlobHierarchySegmentExceptionHeaders,
+    ContainerGetAccountInfoHeaders: ContainerGetAccountInfoHeaders,
+    ContainerGetAccountInfoExceptionHeaders: ContainerGetAccountInfoExceptionHeaders,
+    BlobDownloadHeaders: BlobDownloadHeaders,
+    BlobDownloadExceptionHeaders: BlobDownloadExceptionHeaders,
+    BlobGetPropertiesHeaders: BlobGetPropertiesHeaders,
+    BlobGetPropertiesExceptionHeaders: BlobGetPropertiesExceptionHeaders,
+    BlobDeleteHeaders: BlobDeleteHeaders,
+    BlobDeleteExceptionHeaders: BlobDeleteExceptionHeaders,
+    BlobUndeleteHeaders: BlobUndeleteHeaders,
+    BlobUndeleteExceptionHeaders: BlobUndeleteExceptionHeaders,
+    BlobSetExpiryHeaders: BlobSetExpiryHeaders,
+    BlobSetExpiryExceptionHeaders: BlobSetExpiryExceptionHeaders,
+    BlobSetHttpHeadersHeaders: BlobSetHttpHeadersHeaders,
+    BlobSetHttpHeadersExceptionHeaders: BlobSetHttpHeadersExceptionHeaders,
+    BlobSetImmutabilityPolicyHeaders: BlobSetImmutabilityPolicyHeaders,
+    BlobSetImmutabilityPolicyExceptionHeaders: BlobSetImmutabilityPolicyExceptionHeaders,
+    BlobDeleteImmutabilityPolicyHeaders: BlobDeleteImmutabilityPolicyHeaders,
+    BlobDeleteImmutabilityPolicyExceptionHeaders: BlobDeleteImmutabilityPolicyExceptionHeaders,
+    BlobSetLegalHoldHeaders: BlobSetLegalHoldHeaders,
+    BlobSetLegalHoldExceptionHeaders: BlobSetLegalHoldExceptionHeaders,
+    BlobSetMetadataHeaders: BlobSetMetadataHeaders,
+    BlobSetMetadataExceptionHeaders: BlobSetMetadataExceptionHeaders,
+    BlobAcquireLeaseHeaders: BlobAcquireLeaseHeaders,
+    BlobAcquireLeaseExceptionHeaders: BlobAcquireLeaseExceptionHeaders,
+    BlobReleaseLeaseHeaders: BlobReleaseLeaseHeaders,
+    BlobReleaseLeaseExceptionHeaders: BlobReleaseLeaseExceptionHeaders,
+    BlobRenewLeaseHeaders: BlobRenewLeaseHeaders,
+    BlobRenewLeaseExceptionHeaders: BlobRenewLeaseExceptionHeaders,
+    BlobChangeLeaseHeaders: BlobChangeLeaseHeaders,
+    BlobChangeLeaseExceptionHeaders: BlobChangeLeaseExceptionHeaders,
+    BlobBreakLeaseHeaders: BlobBreakLeaseHeaders,
+    BlobBreakLeaseExceptionHeaders: BlobBreakLeaseExceptionHeaders,
+    BlobCreateSnapshotHeaders: BlobCreateSnapshotHeaders,
+    BlobCreateSnapshotExceptionHeaders: BlobCreateSnapshotExceptionHeaders,
+    BlobStartCopyFromURLHeaders: BlobStartCopyFromURLHeaders,
+    BlobStartCopyFromURLExceptionHeaders: BlobStartCopyFromURLExceptionHeaders,
+    BlobCopyFromURLHeaders: BlobCopyFromURLHeaders,
+    BlobCopyFromURLExceptionHeaders: BlobCopyFromURLExceptionHeaders,
+    BlobAbortCopyFromURLHeaders: BlobAbortCopyFromURLHeaders,
+    BlobAbortCopyFromURLExceptionHeaders: BlobAbortCopyFromURLExceptionHeaders,
+    BlobSetTierHeaders: BlobSetTierHeaders,
+    BlobSetTierExceptionHeaders: BlobSetTierExceptionHeaders,
+    BlobGetAccountInfoHeaders: BlobGetAccountInfoHeaders,
+    BlobGetAccountInfoExceptionHeaders: BlobGetAccountInfoExceptionHeaders,
+    BlobQueryHeaders: BlobQueryHeaders,
+    BlobQueryExceptionHeaders: BlobQueryExceptionHeaders,
+    BlobGetTagsHeaders: BlobGetTagsHeaders,
+    BlobGetTagsExceptionHeaders: BlobGetTagsExceptionHeaders,
+    BlobSetTagsHeaders: BlobSetTagsHeaders,
+    BlobSetTagsExceptionHeaders: BlobSetTagsExceptionHeaders,
+    PageBlobCreateHeaders: PageBlobCreateHeaders,
+    PageBlobCreateExceptionHeaders: PageBlobCreateExceptionHeaders,
+    PageBlobUploadPagesHeaders: PageBlobUploadPagesHeaders,
+    PageBlobUploadPagesExceptionHeaders: PageBlobUploadPagesExceptionHeaders,
+    PageBlobClearPagesHeaders: PageBlobClearPagesHeaders,
+    PageBlobClearPagesExceptionHeaders: PageBlobClearPagesExceptionHeaders,
+    PageBlobUploadPagesFromURLHeaders: PageBlobUploadPagesFromURLHeaders,
+    PageBlobUploadPagesFromURLExceptionHeaders: PageBlobUploadPagesFromURLExceptionHeaders,
+    PageBlobGetPageRangesHeaders: PageBlobGetPageRangesHeaders,
+    PageBlobGetPageRangesExceptionHeaders: PageBlobGetPageRangesExceptionHeaders,
+    PageBlobGetPageRangesDiffHeaders: PageBlobGetPageRangesDiffHeaders,
+    PageBlobGetPageRangesDiffExceptionHeaders: PageBlobGetPageRangesDiffExceptionHeaders,
+    PageBlobResizeHeaders: PageBlobResizeHeaders,
+    PageBlobResizeExceptionHeaders: PageBlobResizeExceptionHeaders,
+    PageBlobUpdateSequenceNumberHeaders: PageBlobUpdateSequenceNumberHeaders,
+    PageBlobUpdateSequenceNumberExceptionHeaders: PageBlobUpdateSequenceNumberExceptionHeaders,
+    PageBlobCopyIncrementalHeaders: PageBlobCopyIncrementalHeaders,
+    PageBlobCopyIncrementalExceptionHeaders: PageBlobCopyIncrementalExceptionHeaders,
+    AppendBlobCreateHeaders: AppendBlobCreateHeaders,
+    AppendBlobCreateExceptionHeaders: AppendBlobCreateExceptionHeaders,
+    AppendBlobAppendBlockHeaders: AppendBlobAppendBlockHeaders,
+    AppendBlobAppendBlockExceptionHeaders: AppendBlobAppendBlockExceptionHeaders,
+    AppendBlobAppendBlockFromUrlHeaders: AppendBlobAppendBlockFromUrlHeaders,
+    AppendBlobAppendBlockFromUrlExceptionHeaders: AppendBlobAppendBlockFromUrlExceptionHeaders,
+    AppendBlobSealHeaders: AppendBlobSealHeaders,
+    AppendBlobSealExceptionHeaders: AppendBlobSealExceptionHeaders,
+    BlockBlobUploadHeaders: BlockBlobUploadHeaders,
+    BlockBlobUploadExceptionHeaders: BlockBlobUploadExceptionHeaders,
+    BlockBlobPutBlobFromUrlHeaders: BlockBlobPutBlobFromUrlHeaders,
+    BlockBlobPutBlobFromUrlExceptionHeaders: BlockBlobPutBlobFromUrlExceptionHeaders,
+    BlockBlobStageBlockHeaders: BlockBlobStageBlockHeaders,
+    BlockBlobStageBlockExceptionHeaders: BlockBlobStageBlockExceptionHeaders,
+    BlockBlobStageBlockFromURLHeaders: BlockBlobStageBlockFromURLHeaders,
+    BlockBlobStageBlockFromURLExceptionHeaders: BlockBlobStageBlockFromURLExceptionHeaders,
+    BlockBlobCommitBlockListHeaders: BlockBlobCommitBlockListHeaders,
+    BlockBlobCommitBlockListExceptionHeaders: BlockBlobCommitBlockListExceptionHeaders,
+    BlockBlobGetBlockListHeaders: BlockBlobGetBlockListHeaders,
+    BlockBlobGetBlockListExceptionHeaders: BlockBlobGetBlockListExceptionHeaders
+});
+
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BlobServiceProperties: BlobServiceProperties,
-    BlobServiceStatistics: BlobServiceStatistics,
-    ContainerItem: ContainerItem,
-    ContainerProperties: ContainerProperties,
-    CorsRule: CorsRule,
-    FilterBlobItem: FilterBlobItem,
-    FilterBlobSegment: FilterBlobSegment,
-    GeoReplication: GeoReplication,
-    KeyInfo: KeyInfo,
-    ListContainersSegmentResponse: ListContainersSegmentResponse,
-    Logging: Logging,
-    Metrics: Metrics,
-    RetentionPolicy: RetentionPolicy,
-    ServiceFilterBlobsHeaders: ServiceFilterBlobsHeaders,
-    ServiceGetAccountInfoHeaders: ServiceGetAccountInfoHeaders,
-    ServiceGetPropertiesHeaders: ServiceGetPropertiesHeaders,
-    ServiceGetStatisticsHeaders: ServiceGetStatisticsHeaders,
-    ServiceGetUserDelegationKeyHeaders: ServiceGetUserDelegationKeyHeaders,
-    ServiceListContainersSegmentHeaders: ServiceListContainersSegmentHeaders,
-    ServiceSetPropertiesHeaders: ServiceSetPropertiesHeaders,
-    ServiceSubmitBatchHeaders: ServiceSubmitBatchHeaders,
-    StaticWebsite: StaticWebsite,
-    StorageError: StorageError,
-    UserDelegationKey: UserDelegationKey
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
-var access = {
-    parameterPath: [
-        "options",
-        "access"
-    ],
+const contentType = {
+    parameterPath: ["options", "contentType"],
     mapper: {
-        serializedName: "x-ms-blob-public-access",
-        type: {
-            name: "String"
-        }
-    }
-};
-var action0 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
+        defaultValue: "application/xml",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'acquire',
+        serializedName: "Content-Type",
         type: {
             name: "String"
         }
     }
 };
-var action1 = {
-    parameterPath: "action",
+const blobServiceProperties = {
+    parameterPath: "blobServiceProperties",
+    mapper: BlobServiceProperties
+};
+const accept = {
+    parameterPath: "accept",
     mapper: {
-        required: true,
+        defaultValue: "application/xml",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'release',
+        serializedName: "Accept",
         type: {
             name: "String"
         }
     }
 };
-var action2 = {
-    parameterPath: "action",
+const url = {
+    parameterPath: "url",
     mapper: {
+        serializedName: "url",
         required: true,
+        xmlName: "url",
+        type: {
+            name: "String"
+        }
+    },
+    skipEncoding: true
+};
+const restype = {
+    parameterPath: "restype",
+    mapper: {
+        defaultValue: "service",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'renew',
+        serializedName: "restype",
         type: {
             name: "String"
         }
     }
 };
-var action3 = {
-    parameterPath: "action",
+const comp = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "properties",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'break',
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var action4 = {
-    parameterPath: "action",
+const timeoutInSeconds = {
+    parameterPath: ["options", "timeoutInSeconds"],
     mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'change',
-        type: {
-            name: "String"
-        }
-    }
-};
-var action5 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "action",
-        defaultValue: 'setAccessControl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var action6 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "action",
-        defaultValue: 'getAccessControl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var appendPosition = {
-    parameterPath: [
-        "options",
-        "appendPositionAccessConditions",
-        "appendPosition"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-condition-appendpos",
+        constraints: {
+            InclusiveMinimum: 0
+        },
+        serializedName: "timeout",
+        xmlName: "timeout",
         type: {
             name: "Number"
         }
     }
 };
-var blobCacheControl = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobCacheControl"
-    ],
+const version = {
+    parameterPath: "version",
     mapper: {
-        serializedName: "x-ms-blob-cache-control",
+        defaultValue: "2020-10-02",
+        isConstant: true,
+        serializedName: "x-ms-version",
         type: {
             name: "String"
         }
     }
 };
-var blobContentDisposition = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentDisposition"
-    ],
+const requestId = {
+    parameterPath: ["options", "requestId"],
     mapper: {
-        serializedName: "x-ms-blob-content-disposition",
+        serializedName: "x-ms-client-request-id",
+        xmlName: "x-ms-client-request-id",
         type: {
             name: "String"
         }
     }
 };
-var blobContentEncoding = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentEncoding"
-    ],
+const accept1 = {
+    parameterPath: "accept",
     mapper: {
-        serializedName: "x-ms-blob-content-encoding",
+        defaultValue: "application/xml",
+        isConstant: true,
+        serializedName: "Accept",
         type: {
             name: "String"
         }
     }
 };
-var blobContentLanguage = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentLanguage"
-    ],
+const comp1 = {
+    parameterPath: "comp",
     mapper: {
-        serializedName: "x-ms-blob-content-language",
+        defaultValue: "stats",
+        isConstant: true,
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var blobContentLength = {
-    parameterPath: "blobContentLength",
+const comp2 = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
-        serializedName: "x-ms-blob-content-length",
+        defaultValue: "list",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prefix = {
+    parameterPath: ["options", "prefix"],
+    mapper: {
+        serializedName: "prefix",
+        xmlName: "prefix",
+        type: {
+            name: "String"
+        }
+    }
+};
+const marker = {
+    parameterPath: ["options", "marker"],
+    mapper: {
+        serializedName: "marker",
+        xmlName: "marker",
+        type: {
+            name: "String"
+        }
+    }
+};
+const maxPageSize = {
+    parameterPath: ["options", "maxPageSize"],
+    mapper: {
+        constraints: {
+            InclusiveMinimum: 1
+        },
+        serializedName: "maxresults",
+        xmlName: "maxresults",
         type: {
             name: "Number"
         }
     }
 };
-var blobContentMD5 = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentMD5"
-    ],
+const include = {
+    parameterPath: ["options", "include"],
     mapper: {
-        serializedName: "x-ms-blob-content-md5",
+        serializedName: "include",
+        xmlName: "include",
+        xmlElementName: "ListContainersIncludeType",
         type: {
-            name: "ByteArray"
+            name: "Sequence",
+            element: {
+                type: {
+                    name: "Enum",
+                    allowedValues: ["metadata", "deleted"]
+                }
+            }
         }
-    }
+    },
+    collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var blobContentType = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentType"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-content-type",
-        type: {
-            name: "String"
-        }
-    }
+const keyInfo = {
+    parameterPath: "keyInfo",
+    mapper: KeyInfo
 };
-var blobSequenceNumber = {
-    parameterPath: [
-        "options",
-        "blobSequenceNumber"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-sequence-number",
-        defaultValue: 0,
-        type: {
-            name: "Number"
-        }
-    }
-};
-var blobTagsString = {
-    parameterPath: [
-        "options",
-        "blobTagsString"
-    ],
-    mapper: {
-        serializedName: "x-ms-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType0 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'PageBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType1 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'AppendBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType2 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'BlockBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blockId = {
-    parameterPath: "blockId",
-    mapper: {
-        required: true,
-        serializedName: "blockid",
-        type: {
-            name: "String"
-        }
-    }
-};
-var breakPeriod = {
-    parameterPath: [
-        "options",
-        "breakPeriod"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-break-period",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var cacheControl = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "cacheControl"
-    ],
-    mapper: {
-        serializedName: "x-ms-cache-control",
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp0 = {
+const comp3 = {
     parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "userdelegationkey",
         isConstant: true,
         serializedName: "comp",
-        defaultValue: 'properties',
         type: {
             name: "String"
         }
     }
 };
-var comp1 = {
+const restype1 = {
+    parameterPath: "restype",
+    mapper: {
+        defaultValue: "account",
+        isConstant: true,
+        serializedName: "restype",
+        type: {
+            name: "String"
+        }
+    }
+};
+const body = {
+    parameterPath: "body",
+    mapper: {
+        serializedName: "body",
+        required: true,
+        xmlName: "body",
+        type: {
+            name: "Stream"
+        }
+    }
+};
+const comp4 = {
     parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "batch",
         isConstant: true,
         serializedName: "comp",
-        defaultValue: 'stats',
         type: {
             name: "String"
         }
     }
 };
-var comp10 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'expiry',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp11 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'snapshot',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp12 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'copy',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp13 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'tier',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp14 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'query',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp15 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'tags',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp16 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'page',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp17 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'pagelist',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp18 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'incrementalcopy',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp19 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'appendblock',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp2 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'list',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp20 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'seal',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp21 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'block',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp22 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'blocklist',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp3 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'userdelegationkey',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp4 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'batch',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp5 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'blobs',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp6 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'metadata',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp7 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'acl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp8 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'undelete',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp9 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'lease',
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentDisposition = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentDisposition"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-disposition",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentEncoding = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentEncoding"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-encoding",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentLanguage = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentLanguage"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-language",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentLength = {
+const contentLength = {
     parameterPath: "contentLength",
     mapper: {
-        required: true,
         serializedName: "Content-Length",
+        required: true,
+        xmlName: "Content-Length",
         type: {
             name: "Number"
         }
     }
 };
-var contentType = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentType"
-    ],
+const multipartContentType = {
+    parameterPath: "multipartContentType",
     mapper: {
-        serializedName: "x-ms-content-type",
+        serializedName: "Content-Type",
+        required: true,
+        xmlName: "Content-Type",
         type: {
             name: "String"
         }
     }
 };
-var copyActionAbortConstant = {
-    parameterPath: "copyActionAbortConstant",
+const comp5 = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "blobs",
         isConstant: true,
-        serializedName: "x-ms-copy-action",
-        defaultValue: 'abort',
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var copyId = {
-    parameterPath: "copyId",
+const where = {
+    parameterPath: ["options", "where"],
     mapper: {
-        required: true,
-        serializedName: "copyid",
+        serializedName: "where",
+        xmlName: "where",
         type: {
             name: "String"
         }
     }
 };
-var copySource = {
-    parameterPath: "copySource",
+const restype2 = {
+    parameterPath: "restype",
     mapper: {
-        required: true,
-        serializedName: "x-ms-copy-source",
+        defaultValue: "container",
+        isConstant: true,
+        serializedName: "restype",
         type: {
             name: "String"
         }
     }
 };
-var defaultEncryptionScope = {
+const metadata = {
+    parameterPath: ["options", "metadata"],
+    mapper: {
+        serializedName: "x-ms-meta",
+        xmlName: "x-ms-meta",
+        type: {
+            name: "Dictionary",
+            value: { type: { name: "String" } }
+        },
+        headerCollectionPrefix: "x-ms-meta-"
+    }
+};
+const access = {
+    parameterPath: ["options", "access"],
+    mapper: {
+        serializedName: "x-ms-blob-public-access",
+        xmlName: "x-ms-blob-public-access",
+        type: {
+            name: "Enum",
+            allowedValues: ["container", "blob"]
+        }
+    }
+};
+const defaultEncryptionScope = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -16723,306 +18278,283 @@ var defaultEncryptionScope = {
     ],
     mapper: {
         serializedName: "x-ms-default-encryption-scope",
+        xmlName: "x-ms-default-encryption-scope",
         type: {
             name: "String"
         }
     }
 };
-var deletedContainerName = {
+const preventEncryptionScopeOverride = {
     parameterPath: [
         "options",
-        "deletedContainerName"
+        "containerEncryptionScope",
+        "preventEncryptionScopeOverride"
     ],
     mapper: {
-        serializedName: "x-ms-deleted-container-name",
+        serializedName: "x-ms-deny-encryption-scope-override",
+        xmlName: "x-ms-deny-encryption-scope-override",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const leaseId = {
+    parameterPath: ["options", "leaseAccessConditions", "leaseId"],
+    mapper: {
+        serializedName: "x-ms-lease-id",
+        xmlName: "x-ms-lease-id",
         type: {
             name: "String"
         }
     }
 };
-var deletedContainerVersion = {
-    parameterPath: [
-        "options",
-        "deletedContainerVersion"
-    ],
-    mapper: {
-        serializedName: "x-ms-deleted-container-version",
-        type: {
-            name: "String"
-        }
-    }
-};
-var deleteSnapshots = {
-    parameterPath: [
-        "options",
-        "deleteSnapshots"
-    ],
-    mapper: {
-        serializedName: "x-ms-delete-snapshots",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "include",
-                "only"
-            ]
-        }
-    }
-};
-var delimiter = {
-    parameterPath: "delimiter",
-    mapper: {
-        required: true,
-        serializedName: "delimiter",
-        type: {
-            name: "String"
-        }
-    }
-};
-var directoryProperties = {
-    parameterPath: [
-        "options",
-        "directoryProperties"
-    ],
-    mapper: {
-        serializedName: "x-ms-properties",
-        type: {
-            name: "String"
-        }
-    }
-};
-var duration = {
-    parameterPath: [
-        "options",
-        "duration"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-duration",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var encryptionAlgorithm = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionAlgorithm"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-algorithm",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "AES256"
-            ]
-        }
-    }
-};
-var encryptionKey = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionKey"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-key",
-        type: {
-            name: "String"
-        }
-    }
-};
-var encryptionKeySha256 = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionKeySha256"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-key-sha256",
-        type: {
-            name: "String"
-        }
-    }
-};
-var encryptionScope = {
-    parameterPath: [
-        "options",
-        "encryptionScope"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-scope",
-        type: {
-            name: "String"
-        }
-    }
-};
-var expiresOn = {
-    parameterPath: [
-        "options",
-        "expiresOn"
-    ],
-    mapper: {
-        serializedName: "x-ms-expiry-time",
-        type: {
-            name: "String"
-        }
-    }
-};
-var expiryOptions = {
-    parameterPath: "expiryOptions",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-expiry-option",
-        type: {
-            name: "String"
-        }
-    }
-};
-var group = {
-    parameterPath: [
-        "options",
-        "group"
-    ],
-    mapper: {
-        serializedName: "x-ms-group",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifMatch = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifMatch"
-    ],
-    mapper: {
-        serializedName: "If-Match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifModifiedSince = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifModifiedSince"
-    ],
+const ifModifiedSince = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifModifiedSince"],
     mapper: {
         serializedName: "If-Modified-Since",
+        xmlName: "If-Modified-Since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var ifNoneMatch = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifNoneMatch"
-    ],
-    mapper: {
-        serializedName: "If-None-Match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifSequenceNumberEqualTo = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberEqualTo"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-eq",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifSequenceNumberLessThan = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberLessThan"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-lt",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifSequenceNumberLessThanOrEqualTo = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberLessThanOrEqualTo"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-le",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifTags = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifTags"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifUnmodifiedSince = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifUnmodifiedSince"
-    ],
+const ifUnmodifiedSince = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifUnmodifiedSince"],
     mapper: {
         serializedName: "If-Unmodified-Since",
+        xmlName: "If-Unmodified-Since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var include0 = {
-    parameterPath: [
-        "options",
-        "include"
-    ],
+const comp6 = {
+    parameterPath: "comp",
     mapper: {
-        serializedName: "include",
+        defaultValue: "metadata",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp7 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "acl",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const containerAcl = {
+    parameterPath: ["options", "containerAcl"],
+    mapper: {
+        serializedName: "containerAcl",
+        xmlName: "SignedIdentifiers",
+        xmlIsWrapped: true,
+        xmlElementName: "SignedIdentifier",
         type: {
             name: "Sequence",
             element: {
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "metadata",
-                        "deleted"
-                    ]
+                    name: "Composite",
+                    className: "SignedIdentifier"
                 }
             }
         }
-    },
-    collectionFormat: coreHttp.QueryCollectionFormat.Csv
+    }
 };
-var include1 = {
-    parameterPath: [
-        "options",
-        "include"
-    ],
+const comp8 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "undelete",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deletedContainerName = {
+    parameterPath: ["options", "deletedContainerName"],
+    mapper: {
+        serializedName: "x-ms-deleted-container-name",
+        xmlName: "x-ms-deleted-container-name",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deletedContainerVersion = {
+    parameterPath: ["options", "deletedContainerVersion"],
+    mapper: {
+        serializedName: "x-ms-deleted-container-version",
+        xmlName: "x-ms-deleted-container-version",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp9 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "rename",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceContainerName = {
+    parameterPath: "sourceContainerName",
+    mapper: {
+        serializedName: "x-ms-source-container-name",
+        required: true,
+        xmlName: "x-ms-source-container-name",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceLeaseId = {
+    parameterPath: ["options", "sourceLeaseId"],
+    mapper: {
+        serializedName: "x-ms-source-lease-id",
+        xmlName: "x-ms-source-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp10 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "lease",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "acquire",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const duration = {
+    parameterPath: ["options", "duration"],
+    mapper: {
+        serializedName: "x-ms-lease-duration",
+        xmlName: "x-ms-lease-duration",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const proposedLeaseId = {
+    parameterPath: ["options", "proposedLeaseId"],
+    mapper: {
+        serializedName: "x-ms-proposed-lease-id",
+        xmlName: "x-ms-proposed-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action1 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "release",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const leaseId1 = {
+    parameterPath: "leaseId",
+    mapper: {
+        serializedName: "x-ms-lease-id",
+        required: true,
+        xmlName: "x-ms-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action2 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "renew",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action3 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "break",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const breakPeriod = {
+    parameterPath: ["options", "breakPeriod"],
+    mapper: {
+        serializedName: "x-ms-lease-break-period",
+        xmlName: "x-ms-lease-break-period",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const action4 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "change",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const proposedLeaseId1 = {
+    parameterPath: "proposedLeaseId",
+    mapper: {
+        serializedName: "x-ms-proposed-lease-id",
+        required: true,
+        xmlName: "x-ms-proposed-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const include1 = {
+    parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
+        xmlName: "include",
+        xmlElementName: "ListBlobsIncludeItem",
         type: {
             name: "Sequence",
             element: {
@@ -17035,7 +18567,10 @@ var include1 = {
                         "snapshots",
                         "uncommittedblobs",
                         "versions",
-                        "tags"
+                        "tags",
+                        "immutabilitypolicy",
+                        "legalhold",
+                        "deletedwithversions"
                     ]
                 }
             }
@@ -17043,465 +18578,354 @@ var include1 = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var leaseId0 = {
-    parameterPath: [
-        "options",
-        "leaseAccessConditions",
-        "leaseId"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var leaseId1 = {
-    parameterPath: "leaseId",
+const delimiter = {
+    parameterPath: "delimiter",
     mapper: {
+        serializedName: "delimiter",
         required: true,
-        serializedName: "x-ms-lease-id",
+        xmlName: "delimiter",
         type: {
             name: "String"
         }
     }
 };
-var listType = {
-    parameterPath: "listType",
-    mapper: {
-        required: true,
-        serializedName: "blocklisttype",
-        defaultValue: 'committed',
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "committed",
-                "uncommitted",
-                "all"
-            ]
-        }
-    }
-};
-var marker0 = {
-    parameterPath: [
-        "options",
-        "marker"
-    ],
-    mapper: {
-        serializedName: "marker",
-        type: {
-            name: "String"
-        }
-    }
-};
-var maxPageSize = {
-    parameterPath: [
-        "options",
-        "maxPageSize"
-    ],
-    mapper: {
-        serializedName: "maxresults",
-        constraints: {
-            InclusiveMinimum: 1
-        },
-        type: {
-            name: "Number"
-        }
-    }
-};
-var maxSize = {
-    parameterPath: [
-        "options",
-        "appendPositionAccessConditions",
-        "maxSize"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-condition-maxsize",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var metadata = {
-    parameterPath: [
-        "options",
-        "metadata"
-    ],
-    mapper: {
-        serializedName: "x-ms-meta",
-        type: {
-            name: "Dictionary",
-            value: {
-                type: {
-                    name: "String"
-                }
-            }
-        },
-        headerCollectionPrefix: "x-ms-meta-"
-    }
-};
-var multipartContentType = {
-    parameterPath: "multipartContentType",
-    mapper: {
-        required: true,
-        serializedName: "Content-Type",
-        type: {
-            name: "String"
-        }
-    }
-};
-var owner = {
-    parameterPath: [
-        "options",
-        "owner"
-    ],
-    mapper: {
-        serializedName: "x-ms-owner",
-        type: {
-            name: "String"
-        }
-    }
-};
-var pageWrite0 = {
-    parameterPath: "pageWrite",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-page-write",
-        defaultValue: 'update',
-        type: {
-            name: "String"
-        }
-    }
-};
-var pageWrite1 = {
-    parameterPath: "pageWrite",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-page-write",
-        defaultValue: 'clear',
-        type: {
-            name: "String"
-        }
-    }
-};
-var pathRenameMode = {
-    parameterPath: [
-        "options",
-        "pathRenameMode"
-    ],
-    mapper: {
-        serializedName: "mode",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "legacy",
-                "posix"
-            ]
-        }
-    }
-};
-var posixAcl = {
-    parameterPath: [
-        "options",
-        "posixAcl"
-    ],
-    mapper: {
-        serializedName: "x-ms-acl",
-        type: {
-            name: "String"
-        }
-    }
-};
-var posixPermissions = {
-    parameterPath: [
-        "options",
-        "posixPermissions"
-    ],
-    mapper: {
-        serializedName: "x-ms-permissions",
-        type: {
-            name: "String"
-        }
-    }
-};
-var posixUmask = {
-    parameterPath: [
-        "options",
-        "posixUmask"
-    ],
-    mapper: {
-        serializedName: "x-ms-umask",
-        type: {
-            name: "String"
-        }
-    }
-};
-var prefix = {
-    parameterPath: [
-        "options",
-        "prefix"
-    ],
-    mapper: {
-        serializedName: "prefix",
-        type: {
-            name: "String"
-        }
-    }
-};
-var preventEncryptionScopeOverride = {
-    parameterPath: [
-        "options",
-        "containerEncryptionScope",
-        "preventEncryptionScopeOverride"
-    ],
-    mapper: {
-        serializedName: "x-ms-deny-encryption-scope-override",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var prevsnapshot = {
-    parameterPath: [
-        "options",
-        "prevsnapshot"
-    ],
-    mapper: {
-        serializedName: "prevsnapshot",
-        type: {
-            name: "String"
-        }
-    }
-};
-var prevSnapshotUrl = {
-    parameterPath: [
-        "options",
-        "prevSnapshotUrl"
-    ],
-    mapper: {
-        serializedName: "x-ms-previous-snapshot-url",
-        type: {
-            name: "String"
-        }
-    }
-};
-var proposedLeaseId0 = {
-    parameterPath: [
-        "options",
-        "proposedLeaseId"
-    ],
-    mapper: {
-        serializedName: "x-ms-proposed-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var proposedLeaseId1 = {
-    parameterPath: "proposedLeaseId",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-proposed-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var range0 = {
-    parameterPath: [
-        "options",
-        "range"
-    ],
-    mapper: {
-        serializedName: "x-ms-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var range1 = {
-    parameterPath: "range",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var rangeGetContentCRC64 = {
-    parameterPath: [
-        "options",
-        "rangeGetContentCRC64"
-    ],
-    mapper: {
-        serializedName: "x-ms-range-get-content-crc64",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var rangeGetContentMD5 = {
-    parameterPath: [
-        "options",
-        "rangeGetContentMD5"
-    ],
-    mapper: {
-        serializedName: "x-ms-range-get-content-md5",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var rehydratePriority = {
-    parameterPath: [
-        "options",
-        "rehydratePriority"
-    ],
-    mapper: {
-        serializedName: "x-ms-rehydrate-priority",
-        type: {
-            name: "String"
-        }
-    }
-};
-var renameSource = {
-    parameterPath: "renameSource",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-rename-source",
-        type: {
-            name: "String"
-        }
-    }
-};
-var requestId = {
-    parameterPath: [
-        "options",
-        "requestId"
-    ],
-    mapper: {
-        serializedName: "x-ms-client-request-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype0 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'service',
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype1 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'account',
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype2 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'container',
-        type: {
-            name: "String"
-        }
-    }
-};
-var sealBlob = {
-    parameterPath: [
-        "options",
-        "sealBlob"
-    ],
-    mapper: {
-        serializedName: "x-ms-seal-blob",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var sequenceNumberAction = {
-    parameterPath: "sequenceNumberAction",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-sequence-number-action",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "max",
-                "update",
-                "increment"
-            ]
-        }
-    }
-};
-var snapshot = {
-    parameterPath: [
-        "options",
-        "snapshot"
-    ],
+const snapshot = {
+    parameterPath: ["options", "snapshot"],
     mapper: {
         serializedName: "snapshot",
+        xmlName: "snapshot",
         type: {
             name: "String"
         }
     }
 };
-var sourceContentCrc64 = {
-    parameterPath: [
-        "options",
-        "sourceContentCrc64"
-    ],
+const versionId = {
+    parameterPath: ["options", "versionId"],
     mapper: {
-        serializedName: "x-ms-source-content-crc64",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var sourceContentMD5 = {
-    parameterPath: [
-        "options",
-        "sourceContentMD5"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-content-md5",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var sourceIfMatch = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfMatch"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-match",
+        serializedName: "versionid",
+        xmlName: "versionid",
         type: {
             name: "String"
         }
     }
 };
-var sourceIfModifiedSince = {
+const range = {
+    parameterPath: ["options", "range"],
+    mapper: {
+        serializedName: "x-ms-range",
+        xmlName: "x-ms-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const rangeGetContentMD5 = {
+    parameterPath: ["options", "rangeGetContentMD5"],
+    mapper: {
+        serializedName: "x-ms-range-get-content-md5",
+        xmlName: "x-ms-range-get-content-md5",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const rangeGetContentCRC64 = {
+    parameterPath: ["options", "rangeGetContentCRC64"],
+    mapper: {
+        serializedName: "x-ms-range-get-content-crc64",
+        xmlName: "x-ms-range-get-content-crc64",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const encryptionKey = {
+    parameterPath: ["options", "cpkInfo", "encryptionKey"],
+    mapper: {
+        serializedName: "x-ms-encryption-key",
+        xmlName: "x-ms-encryption-key",
+        type: {
+            name: "String"
+        }
+    }
+};
+const encryptionKeySha256 = {
+    parameterPath: ["options", "cpkInfo", "encryptionKeySha256"],
+    mapper: {
+        serializedName: "x-ms-encryption-key-sha256",
+        xmlName: "x-ms-encryption-key-sha256",
+        type: {
+            name: "String"
+        }
+    }
+};
+const encryptionAlgorithm = {
+    parameterPath: ["options", "encryptionAlgorithm"],
+    mapper: {
+        defaultValue: "AES256",
+        isConstant: true,
+        serializedName: "x-ms-encryption-algorithm",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifMatch = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifMatch"],
+    mapper: {
+        serializedName: "If-Match",
+        xmlName: "If-Match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifNoneMatch = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifNoneMatch"],
+    mapper: {
+        serializedName: "If-None-Match",
+        xmlName: "If-None-Match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifTags = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifTags"],
+    mapper: {
+        serializedName: "x-ms-if-tags",
+        xmlName: "x-ms-if-tags",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deleteSnapshots = {
+    parameterPath: ["options", "deleteSnapshots"],
+    mapper: {
+        serializedName: "x-ms-delete-snapshots",
+        xmlName: "x-ms-delete-snapshots",
+        type: {
+            name: "Enum",
+            allowedValues: ["include", "only"]
+        }
+    }
+};
+const blobDeleteType = {
+    parameterPath: ["options", "blobDeleteType"],
+    mapper: {
+        serializedName: "deletetype",
+        xmlName: "deletetype",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp11 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "expiry",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const expiryOptions = {
+    parameterPath: "expiryOptions",
+    mapper: {
+        serializedName: "x-ms-expiry-option",
+        required: true,
+        xmlName: "x-ms-expiry-option",
+        type: {
+            name: "String"
+        }
+    }
+};
+const expiresOn = {
+    parameterPath: ["options", "expiresOn"],
+    mapper: {
+        serializedName: "x-ms-expiry-time",
+        xmlName: "x-ms-expiry-time",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobCacheControl = {
+    parameterPath: ["options", "blobHttpHeaders", "blobCacheControl"],
+    mapper: {
+        serializedName: "x-ms-blob-cache-control",
+        xmlName: "x-ms-blob-cache-control",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentType = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentType"],
+    mapper: {
+        serializedName: "x-ms-blob-content-type",
+        xmlName: "x-ms-blob-content-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentMD5 = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentMD5"],
+    mapper: {
+        serializedName: "x-ms-blob-content-md5",
+        xmlName: "x-ms-blob-content-md5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const blobContentEncoding = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentEncoding"],
+    mapper: {
+        serializedName: "x-ms-blob-content-encoding",
+        xmlName: "x-ms-blob-content-encoding",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentLanguage = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentLanguage"],
+    mapper: {
+        serializedName: "x-ms-blob-content-language",
+        xmlName: "x-ms-blob-content-language",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentDisposition = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentDisposition"],
+    mapper: {
+        serializedName: "x-ms-blob-content-disposition",
+        xmlName: "x-ms-blob-content-disposition",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp12 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "immutabilityPolicies",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const immutabilityPolicyExpiry = {
+    parameterPath: ["options", "immutabilityPolicyExpiry"],
+    mapper: {
+        serializedName: "x-ms-immutability-policy-until-date",
+        xmlName: "x-ms-immutability-policy-until-date",
+        type: {
+            name: "DateTimeRfc1123"
+        }
+    }
+};
+const immutabilityPolicyMode = {
+    parameterPath: ["options", "immutabilityPolicyMode"],
+    mapper: {
+        serializedName: "x-ms-immutability-policy-mode",
+        xmlName: "x-ms-immutability-policy-mode",
+        type: {
+            name: "Enum",
+            allowedValues: ["Mutable", "Unlocked", "Locked"]
+        }
+    }
+};
+const comp13 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "legalhold",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const legalHold = {
+    parameterPath: "legalHold",
+    mapper: {
+        serializedName: "x-ms-legal-hold",
+        required: true,
+        xmlName: "x-ms-legal-hold",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const encryptionScope = {
+    parameterPath: ["options", "encryptionScope"],
+    mapper: {
+        serializedName: "x-ms-encryption-scope",
+        xmlName: "x-ms-encryption-scope",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp14 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "snapshot",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tier = {
+    parameterPath: ["options", "tier"],
+    mapper: {
+        serializedName: "x-ms-access-tier",
+        xmlName: "x-ms-access-tier",
+        type: {
+            name: "Enum",
+            allowedValues: [
+                "P4",
+                "P6",
+                "P10",
+                "P15",
+                "P20",
+                "P30",
+                "P40",
+                "P50",
+                "P60",
+                "P70",
+                "P80",
+                "Hot",
+                "Cool",
+                "Archive"
+            ]
+        }
+    }
+};
+const rehydratePriority = {
+    parameterPath: ["options", "rehydratePriority"],
+    mapper: {
+        serializedName: "x-ms-rehydrate-priority",
+        xmlName: "x-ms-rehydrate-priority",
+        type: {
+            name: "Enum",
+            allowedValues: ["High", "Standard"]
+        }
+    }
+};
+const sourceIfModifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -17509,38 +18933,13 @@ var sourceIfModifiedSince = {
     ],
     mapper: {
         serializedName: "x-ms-source-if-modified-since",
+        xmlName: "x-ms-source-if-modified-since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var sourceIfNoneMatch = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfNoneMatch"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-none-match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceIfTags = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfTags"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceIfUnmodifiedSince = {
+const sourceIfUnmodifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -17548,301 +18947,765 @@ var sourceIfUnmodifiedSince = {
     ],
     mapper: {
         serializedName: "x-ms-source-if-unmodified-since",
+        xmlName: "x-ms-source-if-unmodified-since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var sourceLeaseId = {
+const sourceIfMatch = {
+    parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfMatch"],
+    mapper: {
+        serializedName: "x-ms-source-if-match",
+        xmlName: "x-ms-source-if-match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceIfNoneMatch = {
     parameterPath: [
         "options",
-        "sourceLeaseId"
+        "sourceModifiedAccessConditions",
+        "sourceIfNoneMatch"
     ],
     mapper: {
-        serializedName: "x-ms-source-lease-id",
+        serializedName: "x-ms-source-if-none-match",
+        xmlName: "x-ms-source-if-none-match",
         type: {
             name: "String"
         }
     }
 };
-var sourceRange0 = {
-    parameterPath: "sourceRange",
+const sourceIfTags = {
+    parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfTags"],
     mapper: {
-        required: true,
-        serializedName: "x-ms-source-range",
+        serializedName: "x-ms-source-if-tags",
+        xmlName: "x-ms-source-if-tags",
         type: {
             name: "String"
         }
     }
 };
-var sourceRange1 = {
-    parameterPath: [
-        "options",
-        "sourceRange"
-    ],
+const copySource = {
+    parameterPath: "copySource",
     mapper: {
-        serializedName: "x-ms-source-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceUrl = {
-    parameterPath: "sourceUrl",
-    mapper: {
-        required: true,
         serializedName: "x-ms-copy-source",
-        type: {
-            name: "String"
-        }
-    }
-};
-var tier0 = {
-    parameterPath: [
-        "options",
-        "tier"
-    ],
-    mapper: {
-        serializedName: "x-ms-access-tier",
-        type: {
-            name: "String"
-        }
-    }
-};
-var tier1 = {
-    parameterPath: "tier",
-    mapper: {
         required: true,
-        serializedName: "x-ms-access-tier",
+        xmlName: "x-ms-copy-source",
         type: {
             name: "String"
         }
     }
 };
-var timeoutInSeconds = {
-    parameterPath: [
-        "options",
-        "timeoutInSeconds"
-    ],
+const blobTagsString = {
+    parameterPath: ["options", "blobTagsString"],
     mapper: {
-        serializedName: "timeout",
-        constraints: {
-            InclusiveMinimum: 0
-        },
+        serializedName: "x-ms-tags",
+        xmlName: "x-ms-tags",
         type: {
-            name: "Number"
+            name: "String"
         }
     }
 };
-var transactionalContentCrc64 = {
-    parameterPath: [
-        "options",
-        "transactionalContentCrc64"
-    ],
+const sealBlob = {
+    parameterPath: ["options", "sealBlob"],
     mapper: {
-        serializedName: "x-ms-content-crc64",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var transactionalContentMD5 = {
-    parameterPath: [
-        "options",
-        "transactionalContentMD5"
-    ],
-    mapper: {
-        serializedName: "Content-MD5",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var upn = {
-    parameterPath: [
-        "options",
-        "upn"
-    ],
-    mapper: {
-        serializedName: "upn",
+        serializedName: "x-ms-seal-blob",
+        xmlName: "x-ms-seal-blob",
         type: {
             name: "Boolean"
         }
     }
 };
-var url = {
-    parameterPath: "url",
+const legalHold1 = {
+    parameterPath: ["options", "legalHold"],
     mapper: {
-        required: true,
-        serializedName: "url",
-        defaultValue: '',
+        serializedName: "x-ms-legal-hold",
+        xmlName: "x-ms-legal-hold",
         type: {
-            name: "String"
-        }
-    },
-    skipEncoding: true
-};
-var version = {
-    parameterPath: "version",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-version",
-        defaultValue: '2019-12-12',
-        type: {
-            name: "String"
+            name: "Boolean"
         }
     }
 };
-var versionId = {
-    parameterPath: [
-        "options",
-        "versionId"
-    ],
-    mapper: {
-        serializedName: "versionid",
-        type: {
-            name: "String"
-        }
-    }
-};
-var where = {
-    parameterPath: [
-        "options",
-        "where"
-    ],
-    mapper: {
-        serializedName: "where",
-        type: {
-            name: "String"
-        }
-    }
-};
-var xMsRequiresSync = {
+const xMsRequiresSync = {
     parameterPath: "xMsRequiresSync",
     mapper: {
-        required: true,
+        defaultValue: "true",
         isConstant: true,
         serializedName: "x-ms-requires-sync",
-        defaultValue: 'true',
         type: {
             name: "String"
         }
     }
 };
+const sourceContentMD5 = {
+    parameterPath: ["options", "sourceContentMD5"],
+    mapper: {
+        serializedName: "x-ms-source-content-md5",
+        xmlName: "x-ms-source-content-md5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const copySourceAuthorization = {
+    parameterPath: ["options", "copySourceAuthorization"],
+    mapper: {
+        serializedName: "x-ms-copy-source-authorization",
+        xmlName: "x-ms-copy-source-authorization",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp15 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "copy",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copyActionAbortConstant = {
+    parameterPath: "copyActionAbortConstant",
+    mapper: {
+        defaultValue: "abort",
+        isConstant: true,
+        serializedName: "x-ms-copy-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copyId = {
+    parameterPath: "copyId",
+    mapper: {
+        serializedName: "copyid",
+        required: true,
+        xmlName: "copyid",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp16 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "tier",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tier1 = {
+    parameterPath: "tier",
+    mapper: {
+        serializedName: "x-ms-access-tier",
+        required: true,
+        xmlName: "x-ms-access-tier",
+        type: {
+            name: "Enum",
+            allowedValues: [
+                "P4",
+                "P6",
+                "P10",
+                "P15",
+                "P20",
+                "P30",
+                "P40",
+                "P50",
+                "P60",
+                "P70",
+                "P80",
+                "Hot",
+                "Cool",
+                "Archive"
+            ]
+        }
+    }
+};
+const queryRequest = {
+    parameterPath: ["options", "queryRequest"],
+    mapper: QueryRequest
+};
+const comp17 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "query",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp18 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "tags",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tags = {
+    parameterPath: ["options", "tags"],
+    mapper: BlobTags
+};
+const transactionalContentMD5 = {
+    parameterPath: ["options", "transactionalContentMD5"],
+    mapper: {
+        serializedName: "Content-MD5",
+        xmlName: "Content-MD5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const transactionalContentCrc64 = {
+    parameterPath: ["options", "transactionalContentCrc64"],
+    mapper: {
+        serializedName: "x-ms-content-crc64",
+        xmlName: "x-ms-content-crc64",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const blobType = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "PageBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentLength = {
+    parameterPath: "blobContentLength",
+    mapper: {
+        serializedName: "x-ms-blob-content-length",
+        required: true,
+        xmlName: "x-ms-blob-content-length",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const blobSequenceNumber = {
+    parameterPath: ["options", "blobSequenceNumber"],
+    mapper: {
+        serializedName: "x-ms-blob-sequence-number",
+        xmlName: "x-ms-blob-sequence-number",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const contentType1 = {
+    parameterPath: ["options", "contentType"],
+    mapper: {
+        defaultValue: "application/octet-stream",
+        isConstant: true,
+        serializedName: "Content-Type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const body1 = {
+    parameterPath: "body",
+    mapper: {
+        serializedName: "body",
+        required: true,
+        xmlName: "body",
+        type: {
+            name: "Stream"
+        }
+    }
+};
+const accept2 = {
+    parameterPath: "accept",
+    mapper: {
+        defaultValue: "application/xml",
+        isConstant: true,
+        serializedName: "Accept",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp19 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "page",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const pageWrite = {
+    parameterPath: "pageWrite",
+    mapper: {
+        defaultValue: "update",
+        isConstant: true,
+        serializedName: "x-ms-page-write",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifSequenceNumberLessThanOrEqualTo = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberLessThanOrEqualTo"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-le",
+        xmlName: "x-ms-if-sequence-number-le",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const ifSequenceNumberLessThan = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberLessThan"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-lt",
+        xmlName: "x-ms-if-sequence-number-lt",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const ifSequenceNumberEqualTo = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberEqualTo"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-eq",
+        xmlName: "x-ms-if-sequence-number-eq",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const pageWrite1 = {
+    parameterPath: "pageWrite",
+    mapper: {
+        defaultValue: "clear",
+        isConstant: true,
+        serializedName: "x-ms-page-write",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceUrl = {
+    parameterPath: "sourceUrl",
+    mapper: {
+        serializedName: "x-ms-copy-source",
+        required: true,
+        xmlName: "x-ms-copy-source",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceRange = {
+    parameterPath: "sourceRange",
+    mapper: {
+        serializedName: "x-ms-source-range",
+        required: true,
+        xmlName: "x-ms-source-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceContentCrc64 = {
+    parameterPath: ["options", "sourceContentCrc64"],
+    mapper: {
+        serializedName: "x-ms-source-content-crc64",
+        xmlName: "x-ms-source-content-crc64",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const range1 = {
+    parameterPath: "range",
+    mapper: {
+        serializedName: "x-ms-range",
+        required: true,
+        xmlName: "x-ms-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp20 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "pagelist",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prevsnapshot = {
+    parameterPath: ["options", "prevsnapshot"],
+    mapper: {
+        serializedName: "prevsnapshot",
+        xmlName: "prevsnapshot",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prevSnapshotUrl = {
+    parameterPath: ["options", "prevSnapshotUrl"],
+    mapper: {
+        serializedName: "x-ms-previous-snapshot-url",
+        xmlName: "x-ms-previous-snapshot-url",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sequenceNumberAction = {
+    parameterPath: "sequenceNumberAction",
+    mapper: {
+        serializedName: "x-ms-sequence-number-action",
+        required: true,
+        xmlName: "x-ms-sequence-number-action",
+        type: {
+            name: "Enum",
+            allowedValues: ["max", "update", "increment"]
+        }
+    }
+};
+const comp21 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "incrementalcopy",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobType1 = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "AppendBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp22 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "appendblock",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const maxSize = {
+    parameterPath: ["options", "appendPositionAccessConditions", "maxSize"],
+    mapper: {
+        serializedName: "x-ms-blob-condition-maxsize",
+        xmlName: "x-ms-blob-condition-maxsize",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const appendPosition = {
+    parameterPath: [
+        "options",
+        "appendPositionAccessConditions",
+        "appendPosition"
+    ],
+    mapper: {
+        serializedName: "x-ms-blob-condition-appendpos",
+        xmlName: "x-ms-blob-condition-appendpos",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const sourceRange1 = {
+    parameterPath: ["options", "sourceRange"],
+    mapper: {
+        serializedName: "x-ms-source-range",
+        xmlName: "x-ms-source-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp23 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "seal",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobType2 = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "BlockBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copySourceBlobProperties = {
+    parameterPath: ["options", "copySourceBlobProperties"],
+    mapper: {
+        serializedName: "x-ms-copy-source-blob-properties",
+        xmlName: "x-ms-copy-source-blob-properties",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const comp24 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "block",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blockId = {
+    parameterPath: "blockId",
+    mapper: {
+        serializedName: "blockid",
+        required: true,
+        xmlName: "blockid",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blocks = {
+    parameterPath: "blocks",
+    mapper: BlockLookupList
+};
+const comp25 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "blocklist",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const listType = {
+    parameterPath: "listType",
+    mapper: {
+        defaultValue: "committed",
+        serializedName: "blocklisttype",
+        required: true,
+        xmlName: "blocklisttype",
+        type: {
+            name: "Enum",
+            allowedValues: ["committed", "uncommitted", "all"]
+        }
+    }
+};
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Service. */
-var Service = /** @class */ (function () {
+class Service {
     /**
-     * Create a Service.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Service class.
+     * @param client Reference to the service client
      */
-    function Service(client) {
+    constructor(client) {
         this.client = client;
     }
-    Service.prototype.setProperties = function (blobServiceProperties, options, callback) {
-        return this.client.sendOperationRequest({
-            blobServiceProperties: blobServiceProperties,
-            options: options
-        }, setPropertiesOperationSpec, callback);
-    };
-    Service.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec, callback);
-    };
-    Service.prototype.getStatistics = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getStatisticsOperationSpec, callback);
-    };
-    Service.prototype.listContainersSegment = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, listContainersSegmentOperationSpec, callback);
-    };
-    Service.prototype.getUserDelegationKey = function (keyInfo, options, callback) {
-        return this.client.sendOperationRequest({
-            keyInfo: keyInfo,
-            options: options
-        }, getUserDelegationKeyOperationSpec, callback);
-    };
-    Service.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec, callback);
-    };
-    Service.prototype.submitBatch = function (body, contentLength, multipartContentType, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            options: options
-        }, submitBatchOperationSpec, callback);
-    };
-    Service.prototype.filterBlobs = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, filterBlobsOperationSpec, callback);
-    };
-    return Service;
-}());
+    /**
+     * Sets properties for a storage account's Blob service endpoint, including properties for Storage
+     * Analytics and CORS (Cross-Origin Resource Sharing) rules
+     * @param blobServiceProperties The StorageService properties.
+     * @param options The options parameters.
+     */
+    setProperties(blobServiceProperties, options) {
+        const operationArguments = {
+            blobServiceProperties,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setPropertiesOperationSpec);
+    }
+    /**
+     * gets the properties of a storage account's Blob service, including properties for Storage Analytics
+     * and CORS (Cross-Origin Resource Sharing) rules.
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);
+    }
+    /**
+     * Retrieves statistics related to replication for the Blob service. It is only available on the
+     * secondary location endpoint when read-access geo-redundant replication is enabled for the storage
+     * account.
+     * @param options The options parameters.
+     */
+    getStatistics(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getStatisticsOperationSpec);
+    }
+    /**
+     * The List Containers Segment operation returns a list of the containers under the specified account
+     * @param options The options parameters.
+     */
+    listContainersSegment(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listContainersSegmentOperationSpec);
+    }
+    /**
+     * Retrieves a user delegation key for the Blob service. This is only a valid operation when using
+     * bearer token authentication.
+     * @param keyInfo Key information
+     * @param options The options parameters.
+     */
+    getUserDelegationKey(keyInfo, options) {
+        const operationArguments = {
+            keyInfo,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getUserDelegationKeyOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);
+    }
+    /**
+     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
+     * @param contentLength The length of the request.
+     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
+     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);
+    }
+    /**
+     * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a
+     * given search expression.  Filter blobs searches across all containers within a storage account but
+     * can be scoped within the expression to a single container.
+     * @param options The options parameters.
+     */
+    filterBlobs(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer = new coreHttp.Serializer(Mappers, true);
-var setPropertiesOperationSpec = {
+const xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const setPropertiesOperationSpec = {
+    path: "/",
     httpMethod: "PUT",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp0
-    ],
-    headerParameters: [
-        version,
-        requestId
-    ],
-    requestBody: {
-        parameterPath: "blobServiceProperties",
-        mapper: tslib.__assign(tslib.__assign({}, BlobServiceProperties), { required: true })
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         202: {
             headersMapper: ServiceSetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceSetPropertiesHeaders
+            headersMapper: ServiceSetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getPropertiesOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
+    requestBody: blobServiceProperties,
     queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp0
+        restype,
+        comp,
+        timeoutInSeconds
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const getPropertiesOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobServiceProperties,
@@ -17850,26 +19713,26 @@ var getPropertiesOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetPropertiesHeaders
+            headersMapper: ServiceGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getStatisticsOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp1
+        restype,
+        comp,
+        timeoutInSeconds
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer
+};
+const getStatisticsOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobServiceStatistics,
@@ -17877,29 +19740,26 @@ var getStatisticsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetStatisticsHeaders
+            headersMapper: ServiceGetStatisticsExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var listContainersSegmentOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        marker0,
-        maxPageSize,
-        include0,
+        restype,
         timeoutInSeconds,
-        comp2
+        comp1
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer
+};
+const listContainersSegmentOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListContainersSegmentResponse,
@@ -17907,31 +19767,29 @@ var listContainersSegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceListContainersSegmentHeaders
+            headersMapper: ServiceListContainersSegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getUserDelegationKeyOperationSpec = {
-    httpMethod: "POST",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        restype0,
-        comp3
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
+        include
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
-    requestBody: {
-        parameterPath: "keyInfo",
-        mapper: tslib.__assign(tslib.__assign({}, KeyInfo), { required: true })
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer
+};
+const getUserDelegationKeyOperationSpec = {
+    path: "/",
+    httpMethod: "POST",
     responses: {
         200: {
             bodyMapper: UserDelegationKey,
@@ -17939,96 +19797,80 @@ var getUserDelegationKeyOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetUserDelegationKeyHeaders
+            headersMapper: ServiceGetUserDelegationKeyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getAccountInfoOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
+    requestBody: keyInfo,
     queryParameters: [
-        restype1,
-        comp0
+        restype,
+        timeoutInSeconds,
+        comp3
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        contentType,
+        accept,
+        version,
+        requestId
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const getAccountInfoOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ServiceGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetAccountInfoHeaders
+            headersMapper: ServiceGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer
+    serializer: xmlSerializer
 };
-var submitBatchOperationSpec = {
+const submitBatchOperationSpec = {
+    path: "/",
     httpMethod: "POST",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp4
-    ],
-    headerParameters: [
-        contentLength,
-        multipartContentType,
-        version,
-        requestId
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         202: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: ServiceSubmitBatchHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceSubmitBatchHeaders
+            headersMapper: ServiceSubmitBatchExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var filterBlobsOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        where,
-        marker0,
-        maxPageSize,
-        comp5
-    ],
+    requestBody: body,
+    queryParameters: [timeoutInSeconds, comp4],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
-        requestId
+        requestId,
+        contentLength,
+        multipartContentType
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const filterBlobsOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: FilterBlobSegment,
@@ -18036,568 +19878,672 @@ var filterBlobsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceFilterBlobsHeaders
+            headersMapper: ServiceFilterBlobsExceptionHeaders
         }
     },
+    queryParameters: [
+        timeoutInSeconds,
+        marker,
+        maxPageSize,
+        comp5,
+        where
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1
+    ],
     isXML: true,
-    serializer: serializer
+    serializer: xmlSerializer
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$1 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    AccessPolicy: AccessPolicy,
-    BlobFlatListSegment: BlobFlatListSegment,
-    BlobHierarchyListSegment: BlobHierarchyListSegment,
-    BlobItemInternal: BlobItemInternal,
-    BlobPrefix: BlobPrefix,
-    BlobPropertiesInternal: BlobPropertiesInternal,
-    BlobTag: BlobTag,
-    BlobTags: BlobTags,
-    ContainerAcquireLeaseHeaders: ContainerAcquireLeaseHeaders,
-    ContainerBreakLeaseHeaders: ContainerBreakLeaseHeaders,
-    ContainerChangeLeaseHeaders: ContainerChangeLeaseHeaders,
-    ContainerCreateHeaders: ContainerCreateHeaders,
-    ContainerDeleteHeaders: ContainerDeleteHeaders,
-    ContainerGetAccessPolicyHeaders: ContainerGetAccessPolicyHeaders,
-    ContainerGetAccountInfoHeaders: ContainerGetAccountInfoHeaders,
-    ContainerGetPropertiesHeaders: ContainerGetPropertiesHeaders,
-    ContainerListBlobFlatSegmentHeaders: ContainerListBlobFlatSegmentHeaders,
-    ContainerListBlobHierarchySegmentHeaders: ContainerListBlobHierarchySegmentHeaders,
-    ContainerReleaseLeaseHeaders: ContainerReleaseLeaseHeaders,
-    ContainerRenewLeaseHeaders: ContainerRenewLeaseHeaders,
-    ContainerRestoreHeaders: ContainerRestoreHeaders,
-    ContainerSetAccessPolicyHeaders: ContainerSetAccessPolicyHeaders,
-    ContainerSetMetadataHeaders: ContainerSetMetadataHeaders,
-    ListBlobsFlatSegmentResponse: ListBlobsFlatSegmentResponse,
-    ListBlobsHierarchySegmentResponse: ListBlobsHierarchySegmentResponse,
-    SignedIdentifier: SignedIdentifier,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a Container. */
-var Container = /** @class */ (function () {
+class Container {
     /**
-     * Create a Container.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Container class.
+     * @param client Reference to the service client
      */
-    function Container(client) {
+    constructor(client) {
         this.client = client;
     }
-    Container.prototype.create = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, createOperationSpec, callback);
-    };
-    Container.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec$1, callback);
-    };
-    Container.prototype.deleteMethod = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, deleteMethodOperationSpec, callback);
-    };
-    Container.prototype.setMetadata = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setMetadataOperationSpec, callback);
-    };
-    Container.prototype.getAccessPolicy = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccessPolicyOperationSpec, callback);
-    };
-    Container.prototype.setAccessPolicy = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setAccessPolicyOperationSpec, callback);
-    };
-    Container.prototype.restore = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, restoreOperationSpec, callback);
-    };
-    Container.prototype.acquireLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, acquireLeaseOperationSpec, callback);
-    };
-    Container.prototype.releaseLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, releaseLeaseOperationSpec, callback);
-    };
-    Container.prototype.renewLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, renewLeaseOperationSpec, callback);
-    };
-    Container.prototype.breakLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, breakLeaseOperationSpec, callback);
-    };
-    Container.prototype.changeLease = function (leaseId, proposedLeaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
-            options: options
-        }, changeLeaseOperationSpec, callback);
-    };
-    Container.prototype.listBlobFlatSegment = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, listBlobFlatSegmentOperationSpec, callback);
-    };
-    Container.prototype.listBlobHierarchySegment = function (delimiter, options, callback) {
-        return this.client.sendOperationRequest({
-            delimiter: delimiter,
-            options: options
-        }, listBlobHierarchySegmentOperationSpec, callback);
-    };
-    Container.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec$1, callback);
-    };
-    return Container;
-}());
+    /**
+     * creates a new container under the specified account. If the container with the same name already
+     * exists, the operation fails
+     * @param options The options parameters.
+     */
+    create(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec);
+    }
+    /**
+     * returns all user-defined metadata and system properties for the specified container. The data
+     * returned does not include the container's list of blobs
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$1);
+    }
+    /**
+     * operation marks the specified container for deletion. The container and any blobs contained within
+     * it are later deleted during garbage collection
+     * @param options The options parameters.
+     */
+    delete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);
+    }
+    /**
+     * operation sets one or more user-defined name-value pairs for the specified container.
+     * @param options The options parameters.
+     */
+    setMetadata(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);
+    }
+    /**
+     * gets the permissions for the specified container. The permissions indicate whether container data
+     * may be accessed publicly.
+     * @param options The options parameters.
+     */
+    getAccessPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);
+    }
+    /**
+     * sets the permissions for the specified container. The permissions indicate whether blobs in a
+     * container may be accessed publicly.
+     * @param options The options parameters.
+     */
+    setAccessPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);
+    }
+    /**
+     * Restores a previously-deleted container.
+     * @param options The options parameters.
+     */
+    restore(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);
+    }
+    /**
+     * Renames an existing container.
+     * @param sourceContainerName Required.  Specifies the name of the container to rename.
+     * @param options The options parameters.
+     */
+    rename(sourceContainerName, options) {
+        const operationArguments = {
+            sourceContainerName,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renameOperationSpec);
+    }
+    /**
+     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
+     * @param contentLength The length of the request.
+     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
+     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec$1);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param options The options parameters.
+     */
+    acquireLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param options The options parameters.
+     */
+    breakLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
+     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+     *                        (String) for a list of valid GUID string formats.
+     * @param options The options parameters.
+     */
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);
+    }
+    /**
+     * [Update] The List Blobs operation returns a list of the blobs under the specified container
+     * @param options The options parameters.
+     */
+    listBlobFlatSegment(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);
+    }
+    /**
+     * [Update] The List Blobs operation returns a list of the blobs under the specified container
+     * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix
+     *                  element in the response body that acts as a placeholder for all blobs whose names begin with the
+     *                  same substring up to the appearance of the delimiter character. The delimiter may be a single
+     *                  character or a string.
+     * @param options The options parameters.
+     */
+    listBlobHierarchySegment(delimiter, options) {
+        const operationArguments = {
+            delimiter,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$1);
+    }
+}
 // Operation Specifications
-var serializer$1 = new coreHttp.Serializer(Mappers$1, true);
-var createOperationSpec = {
+const xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const createOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
-    headerParameters: [
-        metadata,
-        access,
-        version,
-        requestId,
-        defaultEncryptionScope,
-        preventEncryptionScopeOverride
-    ],
     responses: {
         201: {
             headersMapper: ContainerCreateHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerCreateHeaders
+            headersMapper: ContainerCreateExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var getPropertiesOperationSpec$1 = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0
+        accept1,
+        metadata,
+        access,
+        defaultEncryptionScope,
+        preventEncryptionScopeOverride
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const getPropertiesOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ContainerGetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetPropertiesHeaders
+            headersMapper: ContainerGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var deleteMethodOperationSpec = {
-    httpMethod: "DELETE",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        accept1,
+        leaseId
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const deleteOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "DELETE",
     responses: {
         202: {
             headersMapper: ContainerDeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerDeleteHeaders
+            headersMapper: ContainerDeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var setMetadataOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const setMetadataOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: ContainerSetMetadataHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerSetMetadataExceptionHeaders
+        }
+    },
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp6
     ],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        metadata,
+        leaseId,
         ifModifiedSince
     ],
-    responses: {
-        200: {
-            headersMapper: ContainerSetMetadataHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: ContainerSetMetadataHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
-var getAccessPolicyOperationSpec = {
+const getAccessPolicyOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2,
-        comp7
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        leaseId0
-    ],
     responses: {
         200: {
             bodyMapper: {
-                xmlElementName: "SignedIdentifier",
-                serializedName: "parsedResponse",
                 type: {
                     name: "Sequence",
                     element: {
-                        type: {
-                            name: "Composite",
-                            className: "SignedIdentifier"
-                        }
+                        type: { name: "Composite", className: "SignedIdentifier" }
                     }
-                }
+                },
+                serializedName: "SignedIdentifiers",
+                xmlName: "SignedIdentifiers",
+                xmlIsWrapped: true,
+                xmlElementName: "SignedIdentifier"
             },
             headersMapper: ContainerGetAccessPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetAccessPolicyHeaders
+            headersMapper: ContainerGetAccessPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var setAccessPolicyOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp7
     ],
+    urlParameters: [url],
     headerParameters: [
-        access,
         version,
         requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        accept1,
+        leaseId
     ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "containerAcl"
-        ],
-        mapper: {
-            xmlName: "SignedIdentifiers",
-            xmlElementName: "SignedIdentifier",
-            serializedName: "containerAcl",
-            type: {
-                name: "Sequence",
-                element: {
-                    type: {
-                        name: "Composite",
-                        className: "SignedIdentifier"
-                    }
-                }
-            }
-        }
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const setAccessPolicyOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: ContainerSetAccessPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerSetAccessPolicyHeaders
+            headersMapper: ContainerSetAccessPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var restoreOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
+    requestBody: containerAcl,
+    queryParameters: [
+        timeoutInSeconds,
+        restype2,
+        comp7
     ],
+    urlParameters: [url],
+    headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        access,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince
+    ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$1
+};
+const restoreOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: ContainerRestoreHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerRestoreExceptionHeaders
+        }
+    },
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp8
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1,
         deletedContainerName,
         deletedContainerVersion
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const renameOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
-        201: {
-            headersMapper: ContainerRestoreHeaders
+        200: {
+            headersMapper: ContainerRenameHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerRestoreHeaders
+            headersMapper: ContainerRenameExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var acquireLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
+        restype2,
+        comp9
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        sourceContainerName,
+        sourceLeaseId
+    ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const submitBatchOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "POST",
+    responses: {
+        202: {
+            bodyMapper: {
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
+            },
+            headersMapper: ContainerSubmitBatchHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerSubmitBatchExceptionHeaders
+        }
+    },
+    requestBody: body,
+    queryParameters: [
+        timeoutInSeconds,
+        comp4,
         restype2
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        contentLength,
+        multipartContentType
+    ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$1
+};
+const acquireLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: ContainerAcquireLeaseHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerAcquireLeaseExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        restype2,
+        comp10
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        action,
         duration,
-        proposedLeaseId0,
-        version,
-        requestId,
-        action0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        proposedLeaseId
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const releaseLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
-        201: {
-            headersMapper: ContainerAcquireLeaseHeaders
+        200: {
+            headersMapper: ContainerReleaseLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerAcquireLeaseHeaders
+            headersMapper: ContainerReleaseLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var releaseLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         action1,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        leaseId1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const renewLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: ContainerReleaseLeaseHeaders
+            headersMapper: ContainerRenewLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerReleaseLeaseHeaders
+            headersMapper: ContainerRenewLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var renewLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         leaseId1,
-        version,
-        requestId,
-        action2,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        action2
     ],
-    responses: {
-        200: {
-            headersMapper: ContainerRenewLeaseHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: ContainerRenewLeaseHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
-var breakLeaseOperationSpec = {
+const breakLeaseOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9,
-        restype2
-    ],
-    headerParameters: [
-        breakPeriod,
-        version,
-        requestId,
-        action3,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
     responses: {
         202: {
             headersMapper: ContainerBreakLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerBreakLeaseHeaders
+            headersMapper: ContainerBreakLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var changeLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
-        proposedLeaseId1,
         version,
         requestId,
-        action4,
+        accept1,
         ifModifiedSince,
-        ifUnmodifiedSince
+        ifUnmodifiedSince,
+        action3,
+        breakPeriod
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const changeLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: ContainerChangeLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerChangeLeaseHeaders
+            headersMapper: ContainerChangeLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var listBlobFlatSegmentOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        marker0,
-        maxPageSize,
-        include1,
         timeoutInSeconds,
         restype2,
-        comp2
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        leaseId1,
+        action4,
+        proposedLeaseId1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const listBlobFlatSegmentOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListBlobsFlatSegmentResponse,
@@ -18605,32 +20551,30 @@ var listBlobFlatSegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerListBlobFlatSegmentHeaders
+            headersMapper: ContainerListBlobFlatSegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var listBlobHierarchySegmentOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        delimiter,
-        marker0,
-        maxPageSize,
-        include1,
         timeoutInSeconds,
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
         restype2,
-        comp2
+        include1
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const listBlobHierarchySegmentOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListBlobsHierarchySegmentResponse,
@@ -18638,937 +20582,957 @@ var listBlobHierarchySegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerListBlobHierarchySegmentHeaders
+            headersMapper: ContainerListBlobHierarchySegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var getAccountInfoOperationSpec$1 = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        restype1,
-        comp0
+        timeoutInSeconds,
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
+        restype2,
+        include1,
+        delimiter
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        version,
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const getAccountInfoOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ContainerGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetAccountInfoHeaders
+            headersMapper: ContainerGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$2 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BlobAbortCopyFromURLHeaders: BlobAbortCopyFromURLHeaders,
-    BlobAcquireLeaseHeaders: BlobAcquireLeaseHeaders,
-    BlobBreakLeaseHeaders: BlobBreakLeaseHeaders,
-    BlobChangeLeaseHeaders: BlobChangeLeaseHeaders,
-    BlobCopyFromURLHeaders: BlobCopyFromURLHeaders,
-    BlobCreateSnapshotHeaders: BlobCreateSnapshotHeaders,
-    BlobDeleteHeaders: BlobDeleteHeaders,
-    BlobDownloadHeaders: BlobDownloadHeaders,
-    BlobGetAccessControlHeaders: BlobGetAccessControlHeaders,
-    BlobGetAccountInfoHeaders: BlobGetAccountInfoHeaders,
-    BlobGetPropertiesHeaders: BlobGetPropertiesHeaders,
-    BlobGetTagsHeaders: BlobGetTagsHeaders,
-    BlobQueryHeaders: BlobQueryHeaders,
-    BlobReleaseLeaseHeaders: BlobReleaseLeaseHeaders,
-    BlobRenameHeaders: BlobRenameHeaders,
-    BlobRenewLeaseHeaders: BlobRenewLeaseHeaders,
-    BlobSetAccessControlHeaders: BlobSetAccessControlHeaders,
-    BlobSetExpiryHeaders: BlobSetExpiryHeaders,
-    BlobSetHTTPHeadersHeaders: BlobSetHTTPHeadersHeaders,
-    BlobSetMetadataHeaders: BlobSetMetadataHeaders,
-    BlobSetTagsHeaders: BlobSetTagsHeaders,
-    BlobSetTierHeaders: BlobSetTierHeaders,
-    BlobStartCopyFromURLHeaders: BlobStartCopyFromURLHeaders,
-    BlobTag: BlobTag,
-    BlobTags: BlobTags,
-    BlobUndeleteHeaders: BlobUndeleteHeaders,
-    DataLakeStorageError: DataLakeStorageError,
-    DataLakeStorageErrorError: DataLakeStorageErrorError,
-    DelimitedTextConfiguration: DelimitedTextConfiguration,
-    JsonTextConfiguration: JsonTextConfiguration,
-    QueryFormat: QueryFormat,
-    QueryRequest: QueryRequest,
-    QuerySerialization: QuerySerialization,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a Blob. */
-var Blob$1 = /** @class */ (function () {
+class Blob$1 {
     /**
-     * Create a Blob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Blob class.
+     * @param client Reference to the service client
      */
-    function Blob(client) {
+    constructor(client) {
         this.client = client;
     }
-    Blob.prototype.download = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, downloadOperationSpec, callback);
-    };
-    Blob.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec$2, callback);
-    };
-    Blob.prototype.deleteMethod = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, deleteMethodOperationSpec$1, callback);
-    };
-    Blob.prototype.setAccessControl = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setAccessControlOperationSpec, callback);
-    };
-    Blob.prototype.getAccessControl = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccessControlOperationSpec, callback);
-    };
-    Blob.prototype.rename = function (renameSource, options, callback) {
-        return this.client.sendOperationRequest({
-            renameSource: renameSource,
-            options: options
-        }, renameOperationSpec, callback);
-    };
-    Blob.prototype.undelete = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, undeleteOperationSpec, callback);
-    };
-    Blob.prototype.setExpiry = function (expiryOptions, options, callback) {
-        return this.client.sendOperationRequest({
-            expiryOptions: expiryOptions,
-            options: options
-        }, setExpiryOperationSpec, callback);
-    };
-    Blob.prototype.setHTTPHeaders = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setHTTPHeadersOperationSpec, callback);
-    };
-    Blob.prototype.setMetadata = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setMetadataOperationSpec$1, callback);
-    };
-    Blob.prototype.acquireLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, acquireLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.releaseLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, releaseLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.renewLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, renewLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.changeLease = function (leaseId, proposedLeaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
-            options: options
-        }, changeLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.breakLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, breakLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.createSnapshot = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, createSnapshotOperationSpec, callback);
-    };
-    Blob.prototype.startCopyFromURL = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, startCopyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.copyFromURL = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, copyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.abortCopyFromURL = function (copyId, options, callback) {
-        return this.client.sendOperationRequest({
-            copyId: copyId,
-            options: options
-        }, abortCopyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.setTier = function (tier, options, callback) {
-        return this.client.sendOperationRequest({
-            tier: tier,
-            options: options
-        }, setTierOperationSpec, callback);
-    };
-    Blob.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec$2, callback);
-    };
-    Blob.prototype.query = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, queryOperationSpec, callback);
-    };
-    Blob.prototype.getTags = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getTagsOperationSpec, callback);
-    };
-    Blob.prototype.setTags = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setTagsOperationSpec, callback);
-    };
-    return Blob;
-}());
+    /**
+     * The Download operation reads or downloads a blob from the system, including its metadata and
+     * properties. You can also call Download to read a snapshot.
+     * @param options The options parameters.
+     */
+    download(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);
+    }
+    /**
+     * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
+     * properties for the blob. It does not return the content of the blob.
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$2);
+    }
+    /**
+     * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is
+     * permanently removed from the storage account. If the storage account's soft delete feature is
+     * enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible
+     * immediately. However, the blob service retains the blob or snapshot for the number of days specified
+     * by the DeleteRetentionPolicy section of [Storage service properties]
+     * (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is
+     * permanently removed from the storage account. Note that you continue to be charged for the
+     * soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the
+     * "include=deleted" query parameter to discover which blobs and snapshots have been soft deleted. You
+     * can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a
+     * soft-deleted blob or snapshot causes the service to return an HTTP status code of 404
+     * (ResourceNotFound).
+     * @param options The options parameters.
+     */
+    delete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteOperationSpec$1);
+    }
+    /**
+     * Undelete a blob that was previously soft deleted
+     * @param options The options parameters.
+     */
+    undelete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);
+    }
+    /**
+     * Sets the time a blob will expire and be deleted.
+     * @param expiryOptions Required. Indicates mode of the expiry time
+     * @param options The options parameters.
+     */
+    setExpiry(expiryOptions, options) {
+        const operationArguments = {
+            expiryOptions,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);
+    }
+    /**
+     * The Set HTTP Headers operation sets system properties on the blob
+     * @param options The options parameters.
+     */
+    setHttpHeaders(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);
+    }
+    /**
+     * The Set Immutability Policy operation sets the immutability policy on the blob
+     * @param options The options parameters.
+     */
+    setImmutabilityPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setImmutabilityPolicyOperationSpec);
+    }
+    /**
+     * The Delete Immutability Policy operation deletes the immutability policy on the blob
+     * @param options The options parameters.
+     */
+    deleteImmutabilityPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteImmutabilityPolicyOperationSpec);
+    }
+    /**
+     * The Set Legal Hold operation sets a legal hold on the blob.
+     * @param legalHold Specified if a legal hold should be set on the blob.
+     * @param options The options parameters.
+     */
+    setLegalHold(legalHold, options) {
+        const operationArguments = {
+            legalHold,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setLegalHoldOperationSpec);
+    }
+    /**
+     * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
+     * name-value pairs
+     * @param options The options parameters.
+     */
+    setMetadata(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param options The options parameters.
+     */
+    acquireLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
+     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+     *                        (String) for a list of valid GUID string formats.
+     * @param options The options parameters.
+     */
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param options The options parameters.
+     */
+    breakLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec$1);
+    }
+    /**
+     * The Create Snapshot operation creates a read-only snapshot of a blob
+     * @param options The options parameters.
+     */
+    createSnapshot(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);
+    }
+    /**
+     * The Start Copy From URL operation copies a blob or an internet resource to a new blob.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    startCopyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);
+    }
+    /**
+     * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return
+     * a response until the copy is complete.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    copyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);
+    }
+    /**
+     * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination
+     * blob with zero length and full metadata.
+     * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob
+     *               operation.
+     * @param options The options parameters.
+     */
+    abortCopyFromURL(copyId, options) {
+        const operationArguments = {
+            copyId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);
+    }
+    /**
+     * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium
+     * storage account and on a block blob in a blob storage account (locally redundant storage only). A
+     * premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block
+     * blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's
+     * ETag.
+     * @param tier Indicates the tier to be set on the blob.
+     * @param options The options parameters.
+     */
+    setTier(tier, options) {
+        const operationArguments = {
+            tier,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$2);
+    }
+    /**
+     * The Query operation enables users to select/project on blob data by providing simple query
+     * expressions.
+     * @param options The options parameters.
+     */
+    query(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, queryOperationSpec);
+    }
+    /**
+     * The Get Tags operation enables users to get the tags associated with a blob.
+     * @param options The options parameters.
+     */
+    getTags(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);
+    }
+    /**
+     * The Set Tags operation enables users to set tags on a blob.
+     * @param options The options parameters.
+     */
+    setTags(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$2 = new coreHttp.Serializer(Mappers$2, true);
-var downloadOperationSpec = {
+const xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const downloadOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        versionId,
-        timeoutInSeconds
-    ],
-    headerParameters: [
-        range0,
-        rangeGetContentMD5,
-        rangeGetContentCRC64,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         200: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobDownloadHeaders
         },
         206: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobDownloadHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobDownloadHeaders
+            headersMapper: BlobDownloadExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getPropertiesOperationSpec$2 = {
-    httpMethod: "HEAD",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
+        timeoutInSeconds,
         snapshot,
-        versionId,
-        timeoutInSeconds
+        versionId
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        rangeGetContentMD5,
+        rangeGetContentCRC64,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const getPropertiesOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "HEAD",
     responses: {
         200: {
             headersMapper: BlobGetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetPropertiesHeaders
+            headersMapper: BlobGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var deleteMethodOperationSpec$1 = {
-    httpMethod: "DELETE",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
+        timeoutInSeconds,
         snapshot,
-        versionId,
-        timeoutInSeconds
+        versionId
     ],
+    urlParameters: [url],
     headerParameters: [
-        deleteSnapshots,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const deleteOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "DELETE",
     responses: {
         202: {
             headersMapper: BlobDeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobDeleteHeaders
+            headersMapper: BlobDeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setAccessControlOperationSpec = {
-    httpMethod: "PATCH",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        action5
+        snapshot,
+        versionId,
+        blobDeleteType
     ],
+    urlParameters: [url],
     headerParameters: [
-        owner,
-        group,
-        posixPermissions,
-        posixAcl,
-        requestId,
-        version,
-        leaseId0,
-        ifMatch,
-        ifNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
-    responses: {
-        200: {
-            headersMapper: BlobSetAccessControlHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobSetAccessControlHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var getAccessControlOperationSpec = {
-    httpMethod: "HEAD",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        upn,
-        action6
-    ],
-    headerParameters: [
-        requestId,
-        version,
-        leaseId0,
-        ifMatch,
-        ifNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
-    responses: {
-        200: {
-            headersMapper: BlobGetAccessControlHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobGetAccessControlHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var renameOperationSpec = {
-    httpMethod: "PUT",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        pathRenameMode
-    ],
-    headerParameters: [
-        renameSource,
-        directoryProperties,
-        posixPermissions,
-        posixUmask,
-        sourceLeaseId,
         version,
         requestId,
-        cacheControl,
-        contentType,
-        contentEncoding,
-        contentLanguage,
-        contentDisposition,
-        leaseId0,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
+        ifTags,
+        deleteSnapshots
     ],
-    responses: {
-        201: {
-            headersMapper: BlobRenameHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobRenameHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var undeleteOperationSpec = {
+const undeleteOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp8
-    ],
-    headerParameters: [
-        version,
-        requestId
-    ],
     responses: {
         200: {
             headersMapper: BlobUndeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobUndeleteHeaders
+            headersMapper: BlobUndeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setExpiryOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp10
-    ],
+    queryParameters: [timeoutInSeconds, comp8],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setExpiryOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetExpiryHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetExpiryExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp11],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
         expiryOptions,
         expiresOn
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setHttpHeadersOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobSetExpiryHeaders
+            headersMapper: BlobSetHttpHeadersHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetExpiryHeaders
+            headersMapper: BlobSetHttpHeadersExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setHTTPHeadersOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
         blobCacheControl,
         blobContentType,
         blobContentMD5,
         blobContentEncoding,
         blobContentLanguage,
-        blobContentDisposition,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        blobContentDisposition
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setImmutabilityPolicyOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobSetHTTPHeadersHeaders
+            headersMapper: BlobSetImmutabilityPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetHTTPHeadersHeaders
+            headersMapper: BlobSetImmutabilityPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setMetadataOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp6
-    ],
+    queryParameters: [timeoutInSeconds, comp12],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        ifUnmodifiedSince,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const deleteImmutabilityPolicyOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "DELETE",
+    responses: {
+        200: {
+            headersMapper: BlobDeleteImmutabilityPolicyHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobDeleteImmutabilityPolicyExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp12],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setLegalHoldOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetLegalHoldHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetLegalHoldExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp13],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        legalHold
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setMetadataOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetMetadataHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetMetadataExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp6],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
-        ifTags
+        ifTags,
+        encryptionScope
     ],
-    responses: {
-        200: {
-            headersMapper: BlobSetMetadataHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobSetMetadataHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var acquireLeaseOperationSpec$1 = {
+const acquireLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
-    headerParameters: [
-        duration,
-        proposedLeaseId0,
-        version,
-        requestId,
-        action0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         201: {
             headersMapper: BlobAcquireLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobAcquireLeaseHeaders
+            headersMapper: BlobAcquireLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var releaseLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        action,
+        duration,
+        proposedLeaseId,
+        ifMatch,
+        ifNoneMatch,
+        ifTags
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const releaseLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobReleaseLeaseHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobReleaseLeaseExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         action1,
-        ifModifiedSince,
-        ifUnmodifiedSince,
+        leaseId1,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const renewLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobReleaseLeaseHeaders
+            headersMapper: BlobRenewLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobReleaseLeaseHeaders
+            headersMapper: BlobRenewLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var renewLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        leaseId1,
         action2,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const changeLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobRenewLeaseHeaders
+            headersMapper: BlobChangeLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobRenewLeaseHeaders
+            headersMapper: BlobChangeLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var changeLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         leaseId1,
-        proposedLeaseId1,
-        version,
-        requestId,
         action4,
-        ifModifiedSince,
-        ifUnmodifiedSince,
+        proposedLeaseId1,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
-    responses: {
-        200: {
-            headersMapper: BlobChangeLeaseHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobChangeLeaseHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var breakLeaseOperationSpec$1 = {
+const breakLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
-    headerParameters: [
-        breakPeriod,
-        version,
-        requestId,
-        action3,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         202: {
             headersMapper: BlobBreakLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobBreakLeaseHeaders
+            headersMapper: BlobBreakLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var createSnapshotOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp11
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        accept1,
         ifModifiedSince,
         ifUnmodifiedSince,
+        action3,
+        breakPeriod,
         ifMatch,
         ifNoneMatch,
-        ifTags,
-        leaseId0
+        ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const createSnapshotOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: BlobCreateSnapshotHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobCreateSnapshotHeaders
+            headersMapper: BlobCreateSnapshotExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var startCopyFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    queryParameters: [timeoutInSeconds, comp14],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        tier0,
-        rehydratePriority,
-        copySource,
         version,
         requestId,
-        blobTagsString,
-        sealBlob,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const startCopyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        202: {
+            headersMapper: BlobStartCopyFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobStartCopyFromURLExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        tier,
+        rehydratePriority,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
         sourceIfNoneMatch,
         sourceIfTags,
+        copySource,
+        blobTagsString,
+        sealBlob,
+        legalHold1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const copyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        202: {
+            headersMapper: BlobCopyFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobCopyFromURLExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        leaseId0
-    ],
-    responses: {
-        202: {
-            headersMapper: BlobStartCopyFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobStartCopyFromURLHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var copyFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
-    headerParameters: [
-        metadata,
-        tier0,
-        copySource,
-        version,
-        requestId,
-        sourceContentMD5,
-        blobTagsString,
-        xMsRequiresSync,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        tier,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
         sourceIfNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags,
-        leaseId0
+        copySource,
+        blobTagsString,
+        legalHold1,
+        xMsRequiresSync,
+        sourceContentMD5,
+        copySourceAuthorization
     ],
-    responses: {
-        202: {
-            headersMapper: BlobCopyFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobCopyFromURLHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var abortCopyFromURLOperationSpec = {
+const abortCopyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        copyId,
-        timeoutInSeconds,
-        comp12
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        copyActionAbortConstant,
-        leaseId0
-    ],
     responses: {
         204: {
             headersMapper: BlobAbortCopyFromURLHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobAbortCopyFromURLHeaders
+            headersMapper: BlobAbortCopyFromURLExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setTierOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        snapshot,
-        versionId,
         timeoutInSeconds,
-        comp13
+        comp15,
+        copyId
     ],
+    urlParameters: [url],
     headerParameters: [
-        tier1,
-        rehydratePriority,
         version,
         requestId,
-        leaseId0,
-        ifTags
+        accept1,
+        leaseId,
+        copyActionAbortConstant
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setTierOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: BlobSetTierHeaders
@@ -19578,113 +21542,99 @@ var setTierOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetTierHeaders
+            headersMapper: BlobSetTierExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getAccountInfoOperationSpec$2 = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        restype1,
-        comp0
+        timeoutInSeconds,
+        snapshot,
+        versionId,
+        comp16
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifTags,
+        rehydratePriority,
+        tier1
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const getAccountInfoOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: BlobGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetAccountInfoHeaders
+            headersMapper: BlobGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var queryOperationSpec = {
+const queryOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "POST",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        comp14
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "queryRequest"
-        ],
-        mapper: QueryRequest
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         200: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobQueryHeaders
         },
         206: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobQueryHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobQueryHeaders
+            headersMapper: BlobQueryExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getTagsOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
+    requestBody: queryRequest,
     queryParameters: [
         timeoutInSeconds,
         snapshot,
-        versionId,
-        comp15
+        comp17
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$2
+};
+const getTagsOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobTags,
@@ -19692,1061 +21642,1141 @@ var getTagsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetTagsHeaders
+            headersMapper: BlobGetTagsExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setTagsOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
+        snapshot,
         versionId,
-        comp15
+        comp18
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        transactionalContentMD5,
-        transactionalContentCrc64,
         requestId,
+        accept1,
+        leaseId,
         ifTags
     ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "tags"
-        ],
-        mapper: BlobTags
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setTagsOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         204: {
             headersMapper: BlobSetTagsHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetTagsHeaders
+            headersMapper: BlobSetTagsExceptionHeaders
         }
     },
+    requestBody: tags,
+    queryParameters: [
+        timeoutInSeconds,
+        versionId,
+        comp18
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        leaseId,
+        ifTags,
+        transactionalContentMD5,
+        transactionalContentCrc64
+    ],
     isXML: true,
-    serializer: serializer$2
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$2
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$3 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    ClearRange: ClearRange,
-    PageBlobClearPagesHeaders: PageBlobClearPagesHeaders,
-    PageBlobCopyIncrementalHeaders: PageBlobCopyIncrementalHeaders,
-    PageBlobCreateHeaders: PageBlobCreateHeaders,
-    PageBlobGetPageRangesDiffHeaders: PageBlobGetPageRangesDiffHeaders,
-    PageBlobGetPageRangesHeaders: PageBlobGetPageRangesHeaders,
-    PageBlobResizeHeaders: PageBlobResizeHeaders,
-    PageBlobUpdateSequenceNumberHeaders: PageBlobUpdateSequenceNumberHeaders,
-    PageBlobUploadPagesFromURLHeaders: PageBlobUploadPagesFromURLHeaders,
-    PageBlobUploadPagesHeaders: PageBlobUploadPagesHeaders,
-    PageList: PageList,
-    PageRange: PageRange,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a PageBlob. */
-var PageBlob = /** @class */ (function () {
+class PageBlob {
     /**
-     * Create a PageBlob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class PageBlob class.
+     * @param client Reference to the service client
      */
-    function PageBlob(client) {
+    constructor(client) {
         this.client = client;
     }
-    PageBlob.prototype.create = function (contentLength, blobContentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            blobContentLength: blobContentLength,
-            options: options
-        }, createOperationSpec$1, callback);
-    };
-    PageBlob.prototype.uploadPages = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, uploadPagesOperationSpec, callback);
-    };
-    PageBlob.prototype.clearPages = function (contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            options: options
-        }, clearPagesOperationSpec, callback);
-    };
-    PageBlob.prototype.uploadPagesFromURL = function (sourceUrl, sourceRange, contentLength, range, options, callback) {
-        return this.client.sendOperationRequest({
-            sourceUrl: sourceUrl,
-            sourceRange: sourceRange,
-            contentLength: contentLength,
-            range: range,
-            options: options
-        }, uploadPagesFromURLOperationSpec, callback);
-    };
-    PageBlob.prototype.getPageRanges = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPageRangesOperationSpec, callback);
-    };
-    PageBlob.prototype.getPageRangesDiff = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPageRangesDiffOperationSpec, callback);
-    };
-    PageBlob.prototype.resize = function (blobContentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            blobContentLength: blobContentLength,
-            options: options
-        }, resizeOperationSpec, callback);
-    };
-    PageBlob.prototype.updateSequenceNumber = function (sequenceNumberAction, options, callback) {
-        return this.client.sendOperationRequest({
-            sequenceNumberAction: sequenceNumberAction,
-            options: options
-        }, updateSequenceNumberOperationSpec, callback);
-    };
-    PageBlob.prototype.copyIncremental = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, copyIncrementalOperationSpec, callback);
-    };
-    return PageBlob;
-}());
+    /**
+     * The Create operation creates a new page blob.
+     * @param contentLength The length of the request.
+     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
+     *                          page blob size must be aligned to a 512-byte boundary.
+     * @param options The options parameters.
+     */
+    create(contentLength, blobContentLength, options) {
+        const operationArguments = {
+            contentLength,
+            blobContentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec$1);
+    }
+    /**
+     * The Upload Pages operation writes a range of pages to a page blob
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    uploadPages(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);
+    }
+    /**
+     * The Clear Pages operation clears a set of pages from a page blob
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    clearPages(contentLength, options) {
+        const operationArguments = {
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);
+    }
+    /**
+     * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a
+     * URL
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param sourceRange Bytes of source data in the specified range. The length of this range should
+     *                    match the ContentLength header and x-ms-range/Range destination range header.
+     * @param contentLength The length of the request.
+     * @param range The range of bytes to which the source range would be written. The range should be 512
+     *              aligned and range-end is required.
+     * @param options The options parameters.
+     */
+    uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {
+        const operationArguments = {
+            sourceUrl,
+            sourceRange,
+            contentLength,
+            range,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);
+    }
+    /**
+     * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
+     * page blob
+     * @param options The options parameters.
+     */
+    getPageRanges(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);
+    }
+    /**
+     * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
+     * changed between target blob and previous snapshot.
+     * @param options The options parameters.
+     */
+    getPageRangesDiff(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);
+    }
+    /**
+     * Resize the Blob
+     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
+     *                          page blob size must be aligned to a 512-byte boundary.
+     * @param options The options parameters.
+     */
+    resize(blobContentLength, options) {
+        const operationArguments = {
+            blobContentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);
+    }
+    /**
+     * Update the sequence number of the blob
+     * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.
+     *                             This property applies to page blobs only. This property indicates how the service should modify the
+     *                             blob's sequence number
+     * @param options The options parameters.
+     */
+    updateSequenceNumber(sequenceNumberAction, options) {
+        const operationArguments = {
+            sequenceNumberAction,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);
+    }
+    /**
+     * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
+     * The snapshot is copied such that only the differential changes between the previously copied
+     * snapshot are transferred to the destination. The copied snapshots are complete copies of the
+     * original snapshot and can be read or copied from as usual. This API is supported since REST version
+     * 2016-05-31.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    copyIncremental(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$3 = new coreHttp.Serializer(Mappers$3, true);
-var createOperationSpec$1 = {
+const xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    responses: {
+        201: {
+            headersMapper: PageBlobCreateHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobCreateExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
-        contentLength,
-        tier0,
-        metadata,
-        encryptionScope,
-        blobContentLength,
-        blobSequenceNumber,
         version,
         requestId,
-        blobTagsString,
-        blobType0,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
         blobContentType,
+        blobContentMD5,
         blobContentEncoding,
         blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
         blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        blobType,
+        blobContentLength,
+        blobSequenceNumber
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const uploadPagesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobCreateHeaders
+            headersMapper: PageBlobUploadPagesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobCreateHeaders
+            headersMapper: PageBlobUploadPagesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var uploadPagesOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
         contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
         transactionalContentMD5,
         transactionalContentCrc64,
-        range0,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite0,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        contentType1,
+        accept2,
+        pageWrite,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
-        ifSequenceNumberEqualTo,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        ifSequenceNumberEqualTo
     ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
+    mediaType: "binary",
+    serializer
+};
+const clearPagesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobUploadPagesHeaders
+            headersMapper: PageBlobClearPagesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobUploadPagesHeaders
+            headersMapper: PageBlobClearPagesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var clearPagesOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
         contentLength,
-        range0,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite1,
-        leaseId0,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
         ifSequenceNumberEqualTo,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        pageWrite1
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const uploadPagesFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobClearPagesHeaders
+            headersMapper: PageBlobUploadPagesFromURLHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobClearPagesHeaders
+            headersMapper: PageBlobUploadPagesFromURLExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var uploadPagesFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
-        sourceUrl,
-        sourceRange0,
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
         sourceContentMD5,
-        sourceContentCrc64,
-        contentLength,
-        range1,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        leaseId0,
+        copySourceAuthorization,
+        pageWrite,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
         ifSequenceNumberEqualTo,
+        sourceUrl,
+        sourceRange,
+        sourceContentCrc64,
+        range1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const getPageRangesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
+    responses: {
+        200: {
+            bodyMapper: PageList,
+            headersMapper: PageBlobGetPageRangesHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobGetPageRangesExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp20
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        ifMatch,
+        ifNoneMatch,
+        ifTags
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const getPageRangesDiffOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
+    responses: {
+        200: {
+            bodyMapper: PageList,
+            headersMapper: PageBlobGetPageRangesDiffHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobGetPageRangesDiffExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp20,
+        prevsnapshot
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        prevSnapshotUrl
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const resizeOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: PageBlobResizeHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobResizeExceptionHeaders
+        }
+    },
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        blobContentLength
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const updateSequenceNumberOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: PageBlobUpdateSequenceNumberHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobUpdateSequenceNumberExceptionHeaders
+        }
+    },
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
-    ],
-    responses: {
-        201: {
-            headersMapper: PageBlobUploadPagesFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobUploadPagesFromURLHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var getPageRangesOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        comp17
-    ],
-    headerParameters: [
-        range0,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            bodyMapper: PageList,
-            headersMapper: PageBlobGetPageRangesHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobGetPageRangesHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var getPageRangesDiffOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        prevsnapshot,
-        comp17
-    ],
-    headerParameters: [
-        prevSnapshotUrl,
-        range0,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            bodyMapper: PageList,
-            headersMapper: PageBlobGetPageRangesDiffHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobGetPageRangesDiffHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var resizeOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
-    headerParameters: [
-        encryptionScope,
-        blobContentLength,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            headersMapper: PageBlobResizeHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobResizeHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var updateSequenceNumberOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
-    headerParameters: [
-        sequenceNumberAction,
         blobSequenceNumber,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        sequenceNumberAction
     ],
-    responses: {
-        200: {
-            headersMapper: PageBlobUpdateSequenceNumberHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobUpdateSequenceNumberHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$3
+    serializer: xmlSerializer$3
 };
-var copyIncrementalOperationSpec = {
+const copyIncrementalOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp18
-    ],
-    headerParameters: [
-        copySource,
-        version,
-        requestId,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         202: {
             headersMapper: PageBlobCopyIncrementalHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobCopyIncrementalHeaders
+            headersMapper: PageBlobCopyIncrementalExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is regenerated.
- */
-
-var Mappers$4 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    AppendBlobAppendBlockFromUrlHeaders: AppendBlobAppendBlockFromUrlHeaders,
-    AppendBlobAppendBlockHeaders: AppendBlobAppendBlockHeaders,
-    AppendBlobCreateHeaders: AppendBlobCreateHeaders,
-    AppendBlobSealHeaders: AppendBlobSealHeaders,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
-/** Class representing a AppendBlob. */
-var AppendBlob = /** @class */ (function () {
-    /**
-     * Create a AppendBlob.
-     * @param {StorageClientContext} client Reference to the service client.
-     */
-    function AppendBlob(client) {
-        this.client = client;
-    }
-    AppendBlob.prototype.create = function (contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            options: options
-        }, createOperationSpec$2, callback);
-    };
-    AppendBlob.prototype.appendBlock = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, appendBlockOperationSpec, callback);
-    };
-    AppendBlob.prototype.appendBlockFromUrl = function (sourceUrl, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            sourceUrl: sourceUrl,
-            contentLength: contentLength,
-            options: options
-        }, appendBlockFromUrlOperationSpec, callback);
-    };
-    AppendBlob.prototype.seal = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, sealOperationSpec, callback);
-    };
-    return AppendBlob;
-}());
-// Operation Specifications
-var serializer$4 = new coreHttp.Serializer(Mappers$4, true);
-var createOperationSpec$2 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    queryParameters: [timeoutInSeconds, comp21],
+    urlParameters: [url],
     headerParameters: [
-        contentLength,
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        blobTagsString,
-        blobType1,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
-        blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        201: {
-            headersMapper: AppendBlobCreateHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: AppendBlobCreateHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$4
-};
-var appendBlockOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp19
-    ],
-    headerParameters: [
-        contentLength,
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
-        leaseId0,
-        maxSize,
-        appendPosition,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: AppendBlobAppendBlockHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: AppendBlobAppendBlockHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$4
-};
-var appendBlockFromUrlOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp19
-    ],
-    headerParameters: [
-        sourceUrl,
-        sourceRange1,
-        sourceContentMD5,
-        sourceContentCrc64,
-        contentLength,
-        transactionalContentMD5,
-        encryptionScope,
-        version,
-        requestId,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        leaseId0,
-        maxSize,
-        appendPosition,
+        accept1,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
+        copySource
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+/** Class representing a AppendBlob. */
+class AppendBlob {
+    /**
+     * Initialize a new instance of the class AppendBlob class.
+     * @param client Reference to the service client
+     */
+    constructor(client) {
+        this.client = client;
+    }
+    /**
+     * The Create Append Blob operation creates a new append blob.
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    create(contentLength, options) {
+        const operationArguments = {
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec$2);
+    }
+    /**
+     * The Append Block operation commits a new block of data to the end of an existing append blob. The
+     * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to
+     * AppendBlob. Append Block is supported only on version 2015-02-21 version or later.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    appendBlock(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);
+    }
+    /**
+     * The Append Block operation commits a new block of data to the end of an existing append blob where
+     * the contents are read from a source url. The Append Block operation is permitted only if the blob
+     * was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version
+     * 2015-02-21 version or later.
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    appendBlockFromUrl(sourceUrl, contentLength, options) {
+        const operationArguments = {
+            sourceUrl,
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);
+    }
+    /**
+     * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version
+     * 2019-12-12 version or later.
+     * @param options The options parameters.
+     */
+    seal(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, sealOperationSpec);
+    }
+}
+// Operation Specifications
+const xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: AppendBlobCreateHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: AppendBlobCreateExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        blobTagsString,
+        legalHold1,
+        blobType1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$4
+};
+const appendBlockOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: AppendBlobAppendBlockHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: AppendBlobAppendBlockExceptionHeaders
+        }
+    },
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds, comp22],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        transactionalContentMD5,
+        transactionalContentCrc64,
+        contentType1,
+        accept2,
+        maxSize,
+        appendPosition
+    ],
+    mediaType: "binary",
+    serializer: serializer$1
+};
+const appendBlockFromUrlOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: AppendBlobAppendBlockFromUrlHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: AppendBlobAppendBlockFromUrlHeaders
+            headersMapper: AppendBlobAppendBlockFromUrlExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$4
-};
-var sealOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp20
-    ],
+    queryParameters: [timeoutInSeconds, comp22],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
+        accept1,
+        contentLength,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
         ifMatch,
         ifNoneMatch,
-        appendPosition
+        ifTags,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
+        sourceContentMD5,
+        copySourceAuthorization,
+        transactionalContentMD5,
+        sourceUrl,
+        sourceContentCrc64,
+        maxSize,
+        appendPosition,
+        sourceRange1
     ],
+    isXML: true,
+    serializer: xmlSerializer$4
+};
+const sealOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: AppendBlobSealHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: AppendBlobSealHeaders
+            headersMapper: AppendBlobSealExceptionHeaders
         }
     },
+    queryParameters: [timeoutInSeconds, comp23],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        appendPosition
+    ],
     isXML: true,
-    serializer: serializer$4
+    serializer: xmlSerializer$4
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$5 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    Block: Block,
-    BlockBlobCommitBlockListHeaders: BlockBlobCommitBlockListHeaders,
-    BlockBlobGetBlockListHeaders: BlockBlobGetBlockListHeaders,
-    BlockBlobStageBlockFromURLHeaders: BlockBlobStageBlockFromURLHeaders,
-    BlockBlobStageBlockHeaders: BlockBlobStageBlockHeaders,
-    BlockBlobUploadHeaders: BlockBlobUploadHeaders,
-    BlockList: BlockList,
-    BlockLookupList: BlockLookupList,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a BlockBlob. */
-var BlockBlob = /** @class */ (function () {
+class BlockBlob {
     /**
-     * Create a BlockBlob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class BlockBlob class.
+     * @param client Reference to the service client
      */
-    function BlockBlob(client) {
+    constructor(client) {
         this.client = client;
     }
-    BlockBlob.prototype.upload = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, uploadOperationSpec, callback);
-    };
-    BlockBlob.prototype.stageBlock = function (blockId, contentLength, body, options, callback) {
-        return this.client.sendOperationRequest({
-            blockId: blockId,
-            contentLength: contentLength,
-            body: body,
-            options: options
-        }, stageBlockOperationSpec, callback);
-    };
-    BlockBlob.prototype.stageBlockFromURL = function (blockId, contentLength, sourceUrl, options, callback) {
-        return this.client.sendOperationRequest({
-            blockId: blockId,
-            contentLength: contentLength,
-            sourceUrl: sourceUrl,
-            options: options
-        }, stageBlockFromURLOperationSpec, callback);
-    };
-    BlockBlob.prototype.commitBlockList = function (blocks, options, callback) {
-        return this.client.sendOperationRequest({
-            blocks: blocks,
-            options: options
-        }, commitBlockListOperationSpec, callback);
-    };
-    BlockBlob.prototype.getBlockList = function (listType, options, callback) {
-        return this.client.sendOperationRequest({
-            listType: listType,
-            options: options
-        }, getBlockListOperationSpec, callback);
-    };
-    return BlockBlob;
-}());
+    /**
+     * The Upload Block Blob operation updates the content of an existing block blob. Updating an existing
+     * block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put
+     * Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a
+     * partial update of the content of a block blob, use the Put Block List operation.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    upload(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);
+    }
+    /**
+     * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read
+     * from a given URL.  This API is supported beginning with the 2020-04-08 version. Partial updates are
+     * not supported with Put Blob from URL; the content of an existing blob is overwritten with the
+     * content of the new blob.  To perform partial updates to a block blob’s contents using a source URL,
+     * use the Put Block from URL API in conjunction with Put Block List.
+     * @param contentLength The length of the request.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    putBlobFromUrl(contentLength, copySource, options) {
+        const operationArguments = {
+            contentLength,
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);
+    }
+    /**
+     * The Stage Block operation creates a new block to be committed as part of a blob
+     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
+     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
+     *                for the blockid parameter must be the same size for each block.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    stageBlock(blockId, contentLength, body, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);
+    }
+    /**
+     * The Stage Block operation creates a new block to be committed as part of a blob where the contents
+     * are read from a URL.
+     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
+     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
+     *                for the blockid parameter must be the same size for each block.
+     * @param contentLength The length of the request.
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param options The options parameters.
+     */
+    stageBlockFromURL(blockId, contentLength, sourceUrl, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            sourceUrl,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);
+    }
+    /**
+     * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the
+     * blob. In order to be written as part of a blob, a block must have been successfully written to the
+     * server in a prior Put Block operation. You can call Put Block List to update a blob by uploading
+     * only those blocks that have changed, then committing the new and existing blocks together. You can
+     * do this by specifying whether to commit a block from the committed block list or from the
+     * uncommitted block list, or to commit the most recently uploaded version of the block, whichever list
+     * it may belong to.
+     * @param blocks Blob Blocks.
+     * @param options The options parameters.
+     */
+    commitBlockList(blocks, options) {
+        const operationArguments = {
+            blocks,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);
+    }
+    /**
+     * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
+     * blob
+     * @param listType Specifies whether to return the list of committed blocks, the list of uncommitted
+     *                 blocks, or both lists together.
+     * @param options The options parameters.
+     */
+    getBlockList(listType, options) {
+        const operationArguments = {
+            listType,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$5 = new coreHttp.Serializer(Mappers$5, true);
-var uploadOperationSpec = {
+const xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const uploadOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    responses: {
+        201: {
+            headersMapper: BlockBlobUploadHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobUploadExceptionHeaders
+        }
+    },
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
-        transactionalContentMD5,
+        version,
+        requestId,
         contentLength,
         metadata,
-        encryptionScope,
-        tier0,
-        version,
-        requestId,
-        blobTagsString,
-        blobType2,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
-        blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: BlockBlobUploadHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlockBlobUploadHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$5
-};
-var stageBlockOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        blockId,
-        timeoutInSeconds,
-        comp21
-    ],
-    headerParameters: [
-        contentLength,
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: BlockBlobStageBlockHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlockBlobStageBlockHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$5
-};
-var stageBlockFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        blockId,
-        timeoutInSeconds,
-        comp21
-    ],
-    headerParameters: [
-        contentLength,
-        sourceUrl,
-        sourceRange1,
-        sourceContentMD5,
-        sourceContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        leaseId0,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        transactionalContentMD5,
+        contentType1,
+        accept2,
+        blobType2
+    ],
+    mediaType: "binary",
+    serializer: serializer$2
+};
+const putBlobFromUrlOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: BlockBlobPutBlobFromUrlHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobPutBlobFromUrlExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        encryptionScope,
+        tier,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
-        sourceIfNoneMatch
+        sourceIfNoneMatch,
+        sourceIfTags,
+        copySource,
+        blobTagsString,
+        sourceContentMD5,
+        copySourceAuthorization,
+        transactionalContentMD5,
+        blobType2,
+        copySourceBlobProperties
     ],
+    isXML: true,
+    serializer: xmlSerializer$5
+};
+const stageBlockOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: BlockBlobStageBlockFromURLHeaders
+            headersMapper: BlockBlobStageBlockHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobStageBlockFromURLHeaders
+            headersMapper: BlockBlobStageBlockExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$5
-};
-var commitBlockListOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
+    requestBody: body1,
     queryParameters: [
         timeoutInSeconds,
-        comp22
+        comp24,
+        blockId
     ],
+    urlParameters: [url],
     headerParameters: [
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        metadata,
-        encryptionScope,
-        tier0,
         version,
         requestId,
-        blobTagsString,
-        blobCacheControl,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobContentDisposition,
-        leaseId0,
+        contentLength,
+        leaseId,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        encryptionScope,
+        transactionalContentMD5,
+        transactionalContentCrc64,
+        contentType1,
+        accept2
     ],
-    requestBody: {
-        parameterPath: "blocks",
-        mapper: tslib.__assign(tslib.__assign({}, BlockLookupList), { required: true })
+    mediaType: "binary",
+    serializer: serializer$2
+};
+const stageBlockFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: BlockBlobStageBlockFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobStageBlockFromURLExceptionHeaders
+        }
     },
-    contentType: "application/xml; charset=utf-8",
+    queryParameters: [
+        timeoutInSeconds,
+        comp24,
+        blockId
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        leaseId,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
+        sourceContentMD5,
+        copySourceAuthorization,
+        sourceUrl,
+        sourceContentCrc64,
+        sourceRange1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$5
+};
+const commitBlockListOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: BlockBlobCommitBlockListHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobCommitBlockListHeaders
+            headersMapper: BlockBlobCommitBlockListExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$5
-};
-var getBlockListOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        listType,
-        timeoutInSeconds,
-        comp22
-    ],
+    requestBody: blocks,
+    queryParameters: [timeoutInSeconds, comp25],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId,
-        leaseId0,
-        ifTags
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        transactionalContentMD5,
+        transactionalContentCrc64
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$5
+};
+const getBlockListOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlockList,
@@ -20754,34 +22784,48 @@ var getBlockListOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobGetBlockListHeaders
+            headersMapper: BlockBlobGetBlockListExceptionHeaders
         }
     },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp25,
+        listType
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifTags
+    ],
     isXML: true,
-    serializer: serializer$5
+    serializer: xmlSerializer$5
 };
 
 // Copyright (c) Microsoft Corporation.
 /**
- * The @azure/logger configuration for this package.
+ * The `@azure/logger` configuration for this package.
  */
-var logger = logger$1.createClientLogger("storage-blob");
+const logger = logger$1.createClientLogger("storage-blob");
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-var SDK_VERSION = "12.2.1";
-var SERVICE_VERSION = "2019-12-12";
-var BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
-var BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
-var BLOCK_BLOB_MAX_BLOCKS = 50000;
-var DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
-var DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
-var DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const SDK_VERSION = "12.8.0";
+const SERVICE_VERSION = "2020-10-02";
+const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
+const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
+const BLOCK_BLOB_MAX_BLOCKS = 50000;
+const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
+const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
+const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
 /**
  * The OAuth scope to use with Azure Storage.
  */
-var StorageOAuthScopes = "https://storage.azure.com/.default";
-var URLConstants = {
+const StorageOAuthScopes = "https://storage.azure.com/.default";
+const URLConstants = {
     Parameters: {
         FORCE_BROWSER_NO_CACHE: "_",
         SIGNATURE: "sig",
@@ -20790,14 +22834,14 @@ var URLConstants = {
         TIMEOUT: "timeout"
     }
 };
-var HTTPURLConnection = {
+const HTTPURLConnection = {
     HTTP_ACCEPTED: 202,
     HTTP_CONFLICT: 409,
     HTTP_NOT_FOUND: 404,
     HTTP_PRECON_FAILED: 412,
     HTTP_RANGE_NOT_SATISFIABLE: 416
 };
-var HeaderConstants = {
+const HeaderConstants = {
     AUTHORIZATION: "Authorization",
     AUTHORIZATION_SCHEME: "Bearer",
     CONTENT_ENCODING: "Content-Encoding",
@@ -20822,16 +22866,16 @@ var HeaderConstants = {
     X_MS_ERROR_CODE: "x-ms-error-code",
     X_MS_VERSION: "x-ms-version"
 };
-var ETagNone = "";
-var ETagAny = "*";
-var SIZE_1_MB = 1 * 1024 * 1024;
-var BATCH_MAX_REQUEST = 256;
-var BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
-var HTTP_LINE_ENDING = "\r\n";
-var HTTP_VERSION_1_1 = "HTTP/1.1";
-var EncryptionAlgorithmAES25 = "AES256";
-var DevelopmentConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;";
-var StorageBlobLoggingAllowedHeaderNames = [
+const ETagNone = "";
+const ETagAny = "*";
+const SIZE_1_MB = 1 * 1024 * 1024;
+const BATCH_MAX_REQUEST = 256;
+const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
+const HTTP_LINE_ENDING = "\r\n";
+const HTTP_VERSION_1_1 = "HTTP/1.1";
+const EncryptionAlgorithmAES25 = "AES256";
+const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;
+const StorageBlobLoggingAllowedHeaderNames = [
     "Access-Control-Allow-Origin",
     "Cache-Control",
     "Content-Length",
@@ -20927,7 +22971,7 @@ var StorageBlobLoggingAllowedHeaderNames = [
     "x-ms-if-tags",
     "x-ms-source-if-tags"
 ];
-var StorageBlobLoggingAllowedQueryParameters = [
+const StorageBlobLoggingAllowedQueryParameters = [
     "comp",
     "maxresults",
     "rscc",
@@ -20963,7 +23007,7 @@ var StorageBlobLoggingAllowedQueryParameters = [
     "snapshot"
 ];
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * Reserved URL characters must be properly escaped for Storage services like Blob or File.
  *
@@ -21014,13 +23058,11 @@ var StorageBlobLoggingAllowedQueryParameters = [
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata
  *
- * @export
- * @param {string} url
- * @returns {string}
+ * @param url -
  */
 function escapeURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
     path = path || "/";
     path = escape(path);
     urlParsed.setPath(path);
@@ -21029,12 +23071,11 @@ function escapeURLPath(url) {
 function getProxyUriFromDevConnString(connectionString) {
     // Development Connection String
     // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.search("DevelopmentStorageProxyUri=") !== -1) {
         // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri
-        var matchCredentials = connectionString.split(";");
-        for (var _i = 0, matchCredentials_1 = matchCredentials; _i < matchCredentials_1.length; _i++) {
-            var element = matchCredentials_1[_i];
+        const matchCredentials = connectionString.split(";");
+        for (const element of matchCredentials) {
             if (element.trim().startsWith("DevelopmentStorageProxyUri=")) {
                 proxyUri = element.trim().match("DevelopmentStorageProxyUri=(.*)")[1];
             }
@@ -21043,9 +23084,8 @@ function getProxyUriFromDevConnString(connectionString) {
     return proxyUri;
 }
 function getValueInConnString(connectionString, argument) {
-    var elements = connectionString.split(";");
-    for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
-        var element = elements_1[_i];
+    const elements = connectionString.split(";");
+    for (const element of elements) {
         if (element.trim().startsWith(argument)) {
             return element.trim().match(argument + "=(.*)")[1];
         }
@@ -21055,29 +23095,28 @@ function getValueInConnString(connectionString, argument) {
 /**
  * Extracts the parts of an Azure Storage account connection string.
  *
- * @export
- * @param {string} connectionString Connection string.
- * @returns {ConnectionString}  String key value pairs of the storage account's url and credentials.
+ * @param connectionString - Connection string.
+ * @returns String key value pairs of the storage account's url and credentials.
  */
 function extractConnectionStringParts(connectionString) {
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.startsWith("UseDevelopmentStorage=true")) {
         // Development connection string
         proxyUri = getProxyUriFromDevConnString(connectionString);
         connectionString = DevelopmentConnectionString;
     }
     // Matching BlobEndpoint in the Account connection string
-    var blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
+    let blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
     // Slicing off '/' at the end if exists
     // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)
     blobEndpoint = blobEndpoint.endsWith("/") ? blobEndpoint.slice(0, -1) : blobEndpoint;
     if (connectionString.search("DefaultEndpointsProtocol=") !== -1 &&
         connectionString.search("AccountKey=") !== -1) {
         // Account connection string
-        var defaultEndpointsProtocol = "";
-        var accountName = "";
-        var accountKey = Buffer.from("accountKey", "base64");
-        var endpointSuffix = "";
+        let defaultEndpointsProtocol = "";
+        let accountName = "";
+        let accountKey = Buffer.from("accountKey", "base64");
+        let endpointSuffix = "";
         // Get account name and key
         accountName = getValueInConnString(connectionString, "AccountName");
         accountKey = Buffer.from(getValueInConnString(connectionString, "AccountKey"), "base64");
@@ -21085,7 +23124,7 @@ function extractConnectionStringParts(connectionString) {
             // BlobEndpoint is not present in the Account connection string
             // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`
             defaultEndpointsProtocol = getValueInConnString(connectionString, "DefaultEndpointsProtocol");
-            var protocol = defaultEndpointsProtocol.toLowerCase();
+            const protocol = defaultEndpointsProtocol.toLowerCase();
             if (protocol !== "https" && protocol !== "http") {
                 throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'");
             }
@@ -21093,7 +23132,7 @@ function extractConnectionStringParts(connectionString) {
             if (!endpointSuffix) {
                 throw new Error("Invalid EndpointSuffix in the provided Connection String");
             }
-            blobEndpoint = defaultEndpointsProtocol + "://" + accountName + ".blob." + endpointSuffix;
+            blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
         }
         if (!accountName) {
             throw new Error("Invalid AccountName in the provided Connection String");
@@ -21104,29 +23143,28 @@ function extractConnectionStringParts(connectionString) {
         return {
             kind: "AccountConnString",
             url: blobEndpoint,
-            accountName: accountName,
-            accountKey: accountKey,
-            proxyUri: proxyUri
+            accountName,
+            accountKey,
+            proxyUri
         };
     }
     else {
         // SAS connection string
-        var accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
-        var accountName = getAccountNameFromUrl(blobEndpoint);
+        const accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
+        const accountName = getAccountNameFromUrl(blobEndpoint);
         if (!blobEndpoint) {
             throw new Error("Invalid BlobEndpoint in the provided SAS Connection String");
         }
         else if (!accountSas) {
             throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String");
         }
-        return { kind: "SASConnString", url: blobEndpoint, accountName: accountName, accountSas: accountSas };
+        return { kind: "SASConnString", url: blobEndpoint, accountName, accountSas };
     }
 }
 /**
  * Internal escape method implemented Strategy Two mentioned in escapeURL() description.
  *
- * @param {string} text
- * @returns {string}
+ * @param text -
  */
 function escape(text) {
     return encodeURIComponent(text)
@@ -21139,15 +23177,14 @@ function escape(text) {
  * Append a string to URL path. Will remove duplicated "/" in front of the string
  * when URL path ends with a "/".
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} name String to be appended to URL
- * @returns {string} An updated URL string
+ * @param url - Source URL string
+ * @param name - String to be appended to URL
+ * @returns An updated URL string
  */
 function appendToURLPath(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
-    path = path ? (path.endsWith("/") ? "" + path + name : path + "/" + name) : name;
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
+    path = path ? (path.endsWith("/") ? `${path}${name}` : `${path}/${name}`) : name;
     urlParsed.setPath(path);
     return urlParsed.toString();
 }
@@ -21155,115 +23192,131 @@ function appendToURLPath(url, name) {
  * Set URL parameter name and value. If name exists in URL parameters, old value
  * will be replaced by name key. If not provide value, the parameter will be deleted.
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} name Parameter name
- * @param {string} [value] Parameter value
- * @returns {string} An updated URL string
+ * @param url - Source URL string
+ * @param name - Parameter name
+ * @param value - Parameter value
+ * @returns An updated URL string
  */
 function setURLParameter(url, name, value) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setQueryParameter(name, value);
     return urlParsed.toString();
 }
+/**
+ * Get URL parameter by name.
+ *
+ * @param url -
+ * @param name -
+ */
+function getURLParameter(url, name) {
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    return urlParsed.getQueryParameterValue(name);
+}
 /**
  * Set URL host.
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} host New host string
+ * @param url - Source URL string
+ * @param host - New host string
  * @returns An updated URL string
  */
 function setURLHost(url, host) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setHost(host);
     return urlParsed.toString();
 }
 /**
  * Get URL path from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getPath();
 }
 /**
  * Get URL scheme from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLScheme(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getScheme();
 }
 /**
  * Get URL path and query from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLPathAndQuery(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var pathString = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    const pathString = urlParsed.getPath();
     if (!pathString) {
         throw new RangeError("Invalid url without valid path.");
     }
-    var queryString = urlParsed.getQuery() || "";
+    let queryString = urlParsed.getQuery() || "";
     queryString = queryString.trim();
-    if (queryString != "") {
-        queryString = queryString.startsWith("?") ? queryString : "?" + queryString; // Ensure query string start with '?'
+    if (queryString !== "") {
+        queryString = queryString.startsWith("?") ? queryString : `?${queryString}`; // Ensure query string start with '?'
     }
-    return "" + pathString + queryString;
+    return `${pathString}${queryString}`;
 }
 /**
  * Get URL query key value pairs from an URL string.
  *
- * @export
- * @param {string} url
- * @returns {{[key: string]: string}}
+ * @param url -
  */
 function getURLQueries(url) {
-    var queryString = coreHttp.URLBuilder.parse(url).getQuery();
+    let queryString = coreHttp.URLBuilder.parse(url).getQuery();
     if (!queryString) {
         return {};
     }
     queryString = queryString.trim();
     queryString = queryString.startsWith("?") ? queryString.substr(1) : queryString;
-    var querySubStrings = queryString.split("&");
-    querySubStrings = querySubStrings.filter(function (value) {
-        var indexOfEqual = value.indexOf("=");
-        var lastIndexOfEqual = value.lastIndexOf("=");
+    let querySubStrings = queryString.split("&");
+    querySubStrings = querySubStrings.filter((value) => {
+        const indexOfEqual = value.indexOf("=");
+        const lastIndexOfEqual = value.lastIndexOf("=");
         return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);
     });
-    var queries = {};
-    for (var _i = 0, querySubStrings_1 = querySubStrings; _i < querySubStrings_1.length; _i++) {
-        var querySubString = querySubStrings_1[_i];
-        var splitResults = querySubString.split("=");
-        var key = splitResults[0];
-        var value = splitResults[1];
+    const queries = {};
+    for (const querySubString of querySubStrings) {
+        const splitResults = querySubString.split("=");
+        const key = splitResults[0];
+        const value = splitResults[1];
         queries[key] = value;
     }
     return queries;
 }
+/**
+ * Append a string to URL query.
+ *
+ * @param url - Source URL string.
+ * @param queryParts - String to be appended to the URL query.
+ * @returns An updated URL string.
+ */
+function appendToURLQuery(url, queryParts) {
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let query = urlParsed.getQuery();
+    if (query) {
+        query += "&" + queryParts;
+    }
+    else {
+        query = queryParts;
+    }
+    urlParsed.setQuery(query);
+    return urlParsed.toString();
+}
 /**
  * Rounds a date off to seconds.
  *
- * @export
- * @param {Date} date
- * @param {boolean} [withMilliseconds=true] If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;
+ * @param date -
+ * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;
  *                                          If false, YYYY-MM-DDThh:mm:ssZ will be returned.
- * @returns {string} Date string in ISO8061 format, with or without 7 milliseconds component
+ * @returns Date string in ISO8061 format, with or without 7 milliseconds component
  */
-function truncatedISO8061Date(date, withMilliseconds) {
-    if (withMilliseconds === void 0) { withMilliseconds = true; }
+function truncatedISO8061Date(date, withMilliseconds = true) {
     // Date.toISOString() will return like "2018-10-29T06:34:36.139Z"
-    var dateString = date.toISOString();
+    const dateString = date.toISOString();
     return withMilliseconds
         ? dateString.substring(0, dateString.length - 1) + "0000" + "Z"
         : dateString.substring(0, dateString.length - 5) + "Z";
@@ -21271,9 +23324,7 @@ function truncatedISO8061Date(date, withMilliseconds) {
 /**
  * Base64 encode.
  *
- * @export
- * @param {string} content
- * @returns {string}
+ * @param content -
  */
 function base64encode(content) {
     return !coreHttp.isNode ? btoa(content) : Buffer.from(content).toString("base64");
@@ -21281,69 +23332,59 @@ function base64encode(content) {
 /**
  * Generate a 64 bytes base64 block ID string.
  *
- * @export
- * @param {number} blockIndex
- * @returns {string}
+ * @param blockIndex -
  */
 function generateBlockID(blockIDPrefix, blockIndex) {
     // To generate a 64 bytes base64 string, source string should be 48
-    var maxSourceStringLength = 48;
+    const maxSourceStringLength = 48;
     // A blob can have a maximum of 100,000 uncommitted blocks at any given time
-    var maxBlockIndexLength = 6;
-    var maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
+    const maxBlockIndexLength = 6;
+    const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
     if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {
         blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);
     }
-    var res = blockIDPrefix +
+    const res = blockIDPrefix +
         padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, "0");
     return base64encode(res);
 }
 /**
  * Delay specified time interval.
  *
- * @export
- * @param {number} timeInMs
- * @param {AbortSignalLike} [aborter]
- * @param {Error} [abortError]
+ * @param timeInMs -
+ * @param aborter -
+ * @param abortError -
  */
-function delay(timeInMs, aborter, abortError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var timeout;
-                    var abortHandler = function () {
-                        if (timeout !== undefined) {
-                            clearTimeout(timeout);
-                        }
-                        reject(abortError);
-                    };
-                    var resolveHandler = function () {
-                        if (aborter !== undefined) {
-                            aborter.removeEventListener("abort", abortHandler);
-                        }
-                        resolve();
-                    };
-                    timeout = setTimeout(resolveHandler, timeInMs);
-                    if (aborter !== undefined) {
-                        aborter.addEventListener("abort", abortHandler);
-                    }
-                })];
-        });
+async function delay(timeInMs, aborter, abortError) {
+    return new Promise((resolve, reject) => {
+        /* eslint-disable-next-line prefer-const */
+        let timeout;
+        const abortHandler = () => {
+            if (timeout !== undefined) {
+                clearTimeout(timeout);
+            }
+            reject(abortError);
+        };
+        const resolveHandler = () => {
+            if (aborter !== undefined) {
+                aborter.removeEventListener("abort", abortHandler);
+            }
+            resolve();
+        };
+        timeout = setTimeout(resolveHandler, timeInMs);
+        if (aborter !== undefined) {
+            aborter.addEventListener("abort", abortHandler);
+        }
     });
 }
 /**
  * String.prototype.padStart()
  *
- * @export
- * @param {string} currentString
- * @param {number} targetLength
- * @param {string} [padString=" "]
- * @returns {string}
+ * @param currentString -
+ * @param targetLength -
+ * @param padString -
  */
-function padStart(currentString, targetLength, padString) {
-    if (padString === void 0) { padString = " "; }
-    // TS doesn't know this code needs to run downlevel sometimes.
-    // @ts-expect-error
+function padStart(currentString, targetLength, padString = " ") {
+    // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes
     if (String.prototype.padStart) {
         return currentString.padStart(targetLength, padString);
     }
@@ -21362,22 +23403,20 @@ function padStart(currentString, targetLength, padString) {
 /**
  * If two strings are equal when compared case insensitive.
  *
- * @export
- * @param {string} str1
- * @param {string} str2
- * @returns {boolean}
+ * @param str1 -
+ * @param str2 -
  */
 function iEqual(str1, str2) {
     return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();
 }
 /**
  * Extracts account name from the url
- * @param {string} url url to extract the account name from
- * @returns {string} with the account name
+ * @param url - url to extract the account name from
+ * @returns with the account name
  */
 function getAccountNameFromUrl(url) {
-    var parsedUrl = coreHttp.URLBuilder.parse(url);
-    var accountName;
+    const parsedUrl = coreHttp.URLBuilder.parse(url);
+    let accountName;
     try {
         if (parsedUrl.getHost().split(".")[1] === "blob") {
             // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
@@ -21400,10 +23439,10 @@ function getAccountNameFromUrl(url) {
     }
 }
 function isIpEndpointStyle(parsedUrl) {
-    if (parsedUrl.getHost() == undefined) {
+    if (parsedUrl.getHost() === undefined) {
         return false;
     }
-    var host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
+    const host = parsedUrl.getHost() + (parsedUrl.getPort() === undefined ? "" : ":" + parsedUrl.getPort());
     // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.
     // Case 2: localhost(:port), use broad regex to match port part.
     // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.
@@ -21413,19 +23452,17 @@ function isIpEndpointStyle(parsedUrl) {
 /**
  * Convert Tags to encoded string.
  *
- * @export
- * @param {Tags} tags
- * @returns {string | undefined}
+ * @param tags -
  */
 function toBlobTagsString(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var tagPairs = [];
-    for (var key in tags) {
-        if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
-            tagPairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
+    const tagPairs = [];
+    for (const key in tags) {
+        if (Object.prototype.hasOwnProperty.call(tags, key)) {
+            const value = tags[key];
+            tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
         }
     }
     return tagPairs.join("&");
@@ -21433,23 +23470,21 @@ function toBlobTagsString(tags) {
 /**
  * Convert Tags type to BlobTags.
  *
- * @export
- * @param {Tags} [tags]
- * @returns {(BlobTags | undefined)}
+ * @param tags -
  */
 function toBlobTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {
+    const res = {
         blobTagSet: []
     };
-    for (var key in tags) {
-        if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
+    for (const key in tags) {
+        if (Object.prototype.hasOwnProperty.call(tags, key)) {
+            const value = tags[key];
             res.blobTagSet.push({
-                key: key,
-                value: value
+                key,
+                value
             });
         }
     }
@@ -21458,17 +23493,14 @@ function toBlobTags(tags) {
 /**
  * Covert BlobTags to Tags type.
  *
- * @export
- * @param {BlobTags} [tags]
- * @returns {(Tags | undefined)}
+ * @param tags -
  */
 function toTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {};
-    for (var _i = 0, _a = tags.blobTagSet; _i < _a.length; _i++) {
-        var blobTag = _a[_i];
+    const res = {};
+    for (const blobTag of tags.blobTagSet) {
         res[blobTag.key] = blobTag.value;
     }
     return res;
@@ -21476,9 +23508,7 @@ function toTags(tags) {
 /**
  * Convert BlobQueryTextConfiguration to QuerySerialization type.
  *
- * @export
- * @param {(BlobQueryJsonTextConfiguration | BlobQueryCsvTextConfiguration)} [textConfiguration]
- * @returns {(QuerySerialization | undefined)}
+ * @param textConfiguration -
  */
 function toQuerySerialization(textConfiguration) {
     if (textConfiguration === undefined) {
@@ -21507,6 +23537,21 @@ function toQuerySerialization(textConfiguration) {
                     }
                 }
             };
+        case "arrow":
+            return {
+                format: {
+                    type: "arrow",
+                    arrowConfiguration: {
+                        schema: textConfiguration.schema
+                    }
+                }
+            };
+        case "parquet":
+            return {
+                format: {
+                    type: "parquet"
+                }
+            };
         default:
             throw Error("Invalid BlobQueryTextConfiguration.");
     }
@@ -21520,18 +23565,18 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
         // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.
         return undefined;
     }
-    var orProperties = [];
-    var _loop_1 = function (key) {
-        var ids = key.split("_");
-        var policyPrefix = "or-";
+    const orProperties = [];
+    for (const key in objectReplicationRecord) {
+        const ids = key.split("_");
+        const policyPrefix = "or-";
         if (ids[0].startsWith(policyPrefix)) {
             ids[0] = ids[0].substring(policyPrefix.length);
         }
-        var rule = {
+        const rule = {
             ruleId: ids[1],
             replicationStatus: objectReplicationRecord[key]
         };
-        var policyIndex = orProperties.findIndex(function (policy) { return policy.policyId === ids[0]; });
+        const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);
         if (policyIndex > -1) {
             orProperties[policyIndex].rules.push(rule);
         }
@@ -21541,14 +23586,24 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
                 rules: [rule]
             });
         }
-    };
-    for (var key in objectReplicationRecord) {
-        _loop_1(key);
     }
     return orProperties;
 }
+/**
+ * Attach a TokenCredential to an object.
+ *
+ * @param thing -
+ * @param credential -
+ */
+function attachCredential(thing, credential) {
+    thing.credential = credential;
+    return thing;
+}
+function httpAuthorizationToString(httpAuthorization) {
+    return httpAuthorization ? httpAuthorization.scheme + " " + httpAuthorization.value : undefined;
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:
  *
@@ -21559,66 +23614,47 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
  * 2. Remove cookie header for security
  *
  * 3. Remove content-length header to avoid browsers warning
- *
- * @class StorageBrowserPolicy
- * @extends {BaseRequestPolicy}
  */
-var StorageBrowserPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageBrowserPolicy, _super);
+class StorageBrowserPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of StorageBrowserPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @memberof StorageBrowserPolicy
+     * @param nextPolicy -
+     * @param options -
      */
-    function StorageBrowserPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageBrowserPolicy
+     * @param request -
      */
-    StorageBrowserPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                }
-            });
-        });
-    };
-    return StorageBrowserPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            return this._nextPolicy.sendRequest(request);
+        }
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
- *
- * @export
- * @class StorageBrowserPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var StorageBrowserPolicyFactory = /** @class */ (function () {
-    function StorageBrowserPolicyFactory() {
-    }
+class StorageBrowserPolicyFactory {
     /**
      * Creates a StorageBrowserPolicyFactory object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageBrowserPolicy}
-     * @memberof StorageBrowserPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageBrowserPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageBrowserPolicy(nextPolicy, options);
-    };
-    return StorageBrowserPolicyFactory;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 (function (StorageRetryPolicyType) {
     /**
      * Exponential retry. Retry time delay grows exponentially.
@@ -21630,7 +23666,7 @@ var StorageBrowserPolicyFactory = /** @class */ (function () {
     StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
 })(exports.StorageRetryPolicyType || (exports.StorageRetryPolicyType = {}));
 // Default values of StorageRetryOptions
-var DEFAULT_RETRY_OPTIONS = {
+const DEFAULT_RETRY_OPTIONS = {
     maxRetryDelayInMs: 120 * 1000,
     maxTries: 4,
     retryDelayInMs: 4 * 1000,
@@ -21638,28 +23674,22 @@ var DEFAULT_RETRY_OPTIONS = {
     secondaryHost: "",
     tryTimeoutInMs: undefined // Use server side default timeout strategy
 };
-var RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
+const RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
 /**
  * Retry policy with exponential retry and linear retry implemented.
- *
- * @class RetryPolicy
- * @extends {BaseRequestPolicy}
  */
-var StorageRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageRetryPolicy, _super);
+class StorageRetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of RetryPolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {StorageRetryOptions} [retryOptions=DEFAULT_RETRY_OPTIONS]
-     * @memberof StorageRetryPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param retryOptions -
      */
-    function StorageRetryPolicy(nextPolicy, options, retryOptions) {
-        if (retryOptions === void 0) { retryOptions = DEFAULT_RETRY_OPTIONS; }
-        var _this = _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {
+        super(nextPolicy, options);
         // Initialize retry options
-        _this.retryOptions = {
+        this.retryOptions = {
             retryPolicyType: retryOptions.retryPolicyType
                 ? retryOptions.retryPolicyType
                 : DEFAULT_RETRY_OPTIONS.retryPolicyType,
@@ -21681,101 +23711,73 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
                 ? retryOptions.secondaryHost
                 : DEFAULT_RETRY_OPTIONS.secondaryHost
         };
-        return _this;
     }
     /**
      * Sends request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageRetryPolicy
+     * @param request -
      */
-    StorageRetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this.attemptSendRequest(request, false, 1)];
-            });
-        });
-    };
+    async sendRequest(request) {
+        return this.attemptSendRequest(request, false, 1);
+    }
     /**
      * Decide and perform next retry. Won't mutate request parameter.
      *
-     * @protected
-     * @param {WebResource} request
-     * @param {boolean} secondaryHas404  If attempt was against the secondary & it returned a StatusNotFound (404), then
+     * @param request -
+     * @param secondaryHas404 -  If attempt was against the secondary & it returned a StatusNotFound (404), then
      *                                   the resource was not found. This may be due to replication delay. So, in this
      *                                   case, we'll never try the secondary again for this operation.
-     * @param {number} attempt           How many retries has been attempted to performed, starting from 1, which includes
+     * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes
      *                                   the attempt will be performed by this method call.
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageRetryPolicy
      */
-    StorageRetryPolicy.prototype.attemptSendRequest = function (request, secondaryHas404, attempt) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var newRequest, isPrimaryRetry, response, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        newRequest = request.clone();
-                        isPrimaryRetry = secondaryHas404 ||
-                            !this.retryOptions.secondaryHost ||
-                            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
-                            attempt % 2 === 1;
-                        if (!isPrimaryRetry) {
-                            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
-                        }
-                        // Set the server-side timeout query parameter "timeout=[seconds]"
-                        if (this.retryOptions.tryTimeoutInMs) {
-                            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        logger.info("RetryPolicy: =====> Try=" + attempt + " " + (isPrimaryRetry ? "Primary" : "Secondary"));
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(newRequest)];
-                    case 2:
-                        response = _a.sent();
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
-                            return [2 /*return*/, response];
-                        }
-                        secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        logger.error("RetryPolicy: Caught error, message: " + err_1.message + ", code: " + err_1.code);
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response, err_1)) {
-                            throw err_1;
-                        }
-                        return [3 /*break*/, 4];
-                    case 4: return [4 /*yield*/, this.delay(isPrimaryRetry, attempt, request.abortSignal)];
-                    case 5:
-                        _a.sent();
-                        return [4 /*yield*/, this.attemptSendRequest(request, secondaryHas404, ++attempt)];
-                    case 6: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
+    async attemptSendRequest(request, secondaryHas404, attempt) {
+        const newRequest = request.clone();
+        const isPrimaryRetry = secondaryHas404 ||
+            !this.retryOptions.secondaryHost ||
+            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
+            attempt % 2 === 1;
+        if (!isPrimaryRetry) {
+            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
+        }
+        // Set the server-side timeout query parameter "timeout=[seconds]"
+        if (this.retryOptions.tryTimeoutInMs) {
+            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
+        }
+        let response;
+        try {
+            logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
+            response = await this._nextPolicy.sendRequest(newRequest);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
+                return response;
+            }
+            secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
+        }
+        catch (err) {
+            logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {
+                throw err;
+            }
+        }
+        await this.delay(isPrimaryRetry, attempt, request.abortSignal);
+        return this.attemptSendRequest(request, secondaryHas404, ++attempt);
+    }
     /**
      * Decide whether to retry according to last HTTP response and retry counters.
      *
-     * @protected
-     * @param {boolean} isPrimaryRetry
-     * @param {number} attempt
-     * @param {HttpOperationResponse} [response]
-     * @param {RestError} [err]
-     * @returns {boolean}
-     * @memberof StorageRetryPolicy
+     * @param isPrimaryRetry -
+     * @param attempt -
+     * @param response -
+     * @param err -
      */
-    StorageRetryPolicy.prototype.shouldRetry = function (isPrimaryRetry, attempt, response, err) {
+    shouldRetry(isPrimaryRetry, attempt, response, err) {
         if (attempt >= this.retryOptions.maxTries) {
-            logger.info("RetryPolicy: Attempt(s) " + attempt + " >= maxTries " + this.retryOptions
-                .maxTries + ", no further try.");
+            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions
+                .maxTries}, no further try.`);
             return false;
         }
         // Handle network failures, you may need to customize the list when you implement
         // your own http client
-        var retriableErrors = [
+        const retriableErrors = [
             "ETIMEDOUT",
             "ESOCKETTIMEDOUT",
             "ECONNREFUSED",
@@ -21787,16 +23789,11 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
             "REQUEST_SEND_ERROR" // For default xhr based http client provided in ms-rest-js
         ];
         if (err) {
-            for (var _i = 0, retriableErrors_1 = retriableErrors; _i < retriableErrors_1.length; _i++) {
-                var retriableError = retriableErrors_1[_i];
+            for (const retriableError of retriableErrors) {
                 if (err.name.toUpperCase().includes(retriableError) ||
                     err.message.toUpperCase().includes(retriableError) ||
-                    (err.code &&
-                        err.code
-                            .toString()
-                            .toUpperCase()
-                            .includes(retriableError))) {
-                    logger.info("RetryPolicy: Network error " + retriableError + " found, will retry.");
+                    (err.code && err.code.toString().toUpperCase() === retriableError)) {
+                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
                     return true;
                 }
             }
@@ -21805,290 +23802,213 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
         // the resource was not found. This may be due to replication delay. So, in this
         // case, we'll never try the secondary again for this operation.
         if (response || err) {
-            var statusCode = response ? response.status : err ? err.statusCode : 0;
+            const statusCode = response ? response.status : err ? err.statusCode : 0;
             if (!isPrimaryRetry && statusCode === 404) {
-                logger.info("RetryPolicy: Secondary access with 404, will retry.");
+                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
                 return true;
             }
             // Server internal error or server timeout
             if (statusCode === 503 || statusCode === 500) {
-                logger.info("RetryPolicy: Will retry for status code " + statusCode + ".");
+                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
                 return true;
             }
         }
+        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error "Error: Unclosed root tag`))) {
+            logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
+            return true;
+        }
         return false;
-    };
+    }
     /**
      * Delay a calculated time between retries.
      *
-     * @private
-     * @param {boolean} isPrimaryRetry
-     * @param {number} attempt
-     * @param {AbortSignalLike} [abortSignal]
-     * @memberof StorageRetryPolicy
+     * @param isPrimaryRetry -
+     * @param attempt -
+     * @param abortSignal -
      */
-    StorageRetryPolicy.prototype.delay = function (isPrimaryRetry, attempt, abortSignal) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var delayTimeInMs;
-            return tslib.__generator(this, function (_a) {
-                delayTimeInMs = 0;
-                if (isPrimaryRetry) {
-                    switch (this.retryOptions.retryPolicyType) {
-                        case exports.StorageRetryPolicyType.EXPONENTIAL:
-                            delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
-                            break;
-                        case exports.StorageRetryPolicyType.FIXED:
-                            delayTimeInMs = this.retryOptions.retryDelayInMs;
-                            break;
-                    }
-                }
-                else {
-                    delayTimeInMs = Math.random() * 1000;
-                }
-                logger.info("RetryPolicy: Delay for " + delayTimeInMs + "ms");
-                return [2 /*return*/, delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR)];
-            });
-        });
-    };
-    return StorageRetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async delay(isPrimaryRetry, attempt, abortSignal) {
+        let delayTimeInMs = 0;
+        if (isPrimaryRetry) {
+            switch (this.retryOptions.retryPolicyType) {
+                case exports.StorageRetryPolicyType.EXPONENTIAL:
+                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
+                    break;
+                case exports.StorageRetryPolicyType.FIXED:
+                    delayTimeInMs = this.retryOptions.retryDelayInMs;
+                    break;
+            }
+        }
+        else {
+            delayTimeInMs = Math.random() * 1000;
+        }
+        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
+        return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
- *
- * @export
- * @class StorageRetryPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var StorageRetryPolicyFactory = /** @class */ (function () {
+class StorageRetryPolicyFactory {
     /**
      * Creates an instance of StorageRetryPolicyFactory.
-     * @param {StorageRetryOptions} [retryOptions]
-     * @memberof StorageRetryPolicyFactory
+     * @param retryOptions -
      */
-    function StorageRetryPolicyFactory(retryOptions) {
+    constructor(retryOptions) {
         this.retryOptions = retryOptions;
     }
     /**
      * Creates a StorageRetryPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageRetryPolicy}
-     * @memberof StorageRetryPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageRetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);
-    };
-    return StorageRetryPolicyFactory;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * Credential policy used to sign HTTP(S) requests before sending. This is an
  * abstract class.
- *
- * @export
- * @abstract
- * @class CredentialPolicy
- * @extends {BaseRequestPolicy}
  */
-var CredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(CredentialPolicy, _super);
-    function CredentialPolicy() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class CredentialPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof CredentialPolicy
+     * @param request -
      */
-    CredentialPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         return this._nextPolicy.sendRequest(this.signRequest(request));
-    };
+    }
     /**
      * Child classes must implement this method with request signing. This method
      * will be executed in {@link sendRequest}.
      *
-     * @protected
-     * @abstract
-     * @param {WebResource} request
-     * @returns {WebResource}
-     * @memberof CredentialPolicy
+     * @param request -
      */
-    CredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         // Child classes must override this method with request signing. This method
         // will be executed in sendRequest().
         return request;
-    };
-    return CredentialPolicy;
-}(coreHttp.BaseRequestPolicy));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
  * or for use with Shared Access Signatures (SAS).
- *
- * @export
- * @class AnonymousCredentialPolicy
- * @extends {CredentialPolicy}
  */
-var AnonymousCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredentialPolicy, _super);
+class AnonymousCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of AnonymousCredentialPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @memberof AnonymousCredentialPolicy
+     * @param nextPolicy -
+     * @param options -
      */
-    function AnonymousCredentialPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    return AnonymousCredentialPolicy;
-}(CredentialPolicy));
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Credential is an abstract class for Azure Storage HTTP requests signing. This
  * class will host an credentialPolicyCreator factory which generates CredentialPolicy.
- *
- * @export
- * @abstract
- * @class Credential
  */
-var Credential = /** @class */ (function () {
-    function Credential() {
-    }
+class Credential {
     /**
      * Creates a RequestPolicy object.
      *
-     * @param {RequestPolicy} _nextPolicy
-     * @param {RequestPolicyOptions} _options
-     * @returns {RequestPolicy}
-     * @memberof Credential
+     * @param _nextPolicy -
+     * @param _options -
      */
-    Credential.prototype.create = function (
-    // tslint:disable-next-line:variable-name
-    _nextPolicy, 
-    // tslint:disable-next-line:variable-name
-    _options) {
+    create(_nextPolicy, _options) {
         throw new Error("Method should be implemented in children classes.");
-    };
-    return Credential;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredential provides a credentialPolicyCreator member used to create
  * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with
  * HTTP(S) requests that read public resources or for use with Shared Access
  * Signatures (SAS).
- *
- * @export
- * @class AnonymousCredential
- * @extends {Credential}
  */
-var AnonymousCredential = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredential, _super);
-    function AnonymousCredential() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class AnonymousCredential extends Credential {
     /**
      * Creates an {@link AnonymousCredentialPolicy} object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {AnonymousCredentialPolicy}
-     * @memberof AnonymousCredential
+     * @param nextPolicy -
+     * @param options -
      */
-    AnonymousCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new AnonymousCredentialPolicy(nextPolicy, options);
-    };
-    return AnonymousCredential;
-}(Credential));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicy is a policy used to tag user-agent header for every requests.
- *
- * @class TelemetryPolicy
- * @extends {BaseRequestPolicy}
  */
-var TelemetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TelemetryPolicy, _super);
+class TelemetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of TelemetryPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {string} telemetry
-     * @memberof TelemetryPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param telemetry -
      */
-    function TelemetryPolicy(nextPolicy, options, telemetry) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.telemetry = telemetry;
-        return _this;
+    constructor(nextPolicy, options, telemetry) {
+        super(nextPolicy, options);
+        this.telemetry = telemetry;
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof TelemetryPolicy
+     * @param request -
      */
-    TelemetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    if (!request.headers) {
-                        request.headers = new coreHttp.HttpHeaders();
-                    }
-                    if (!request.headers.get(HeaderConstants.USER_AGENT)) {
-                        request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return TelemetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            if (!request.headers) {
+                request.headers = new coreHttp.HttpHeaders();
+            }
+            if (!request.headers.get(HeaderConstants.USER_AGENT)) {
+                request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.
- *
- * @export
- * @class TelemetryPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var TelemetryPolicyFactory = /** @class */ (function () {
+class TelemetryPolicyFactory {
     /**
      * Creates an instance of TelemetryPolicyFactory.
-     * @param {UserAgentOptions} [telemetry]
-     * @memberof TelemetryPolicyFactory
+     * @param telemetry -
      */
-    function TelemetryPolicyFactory(telemetry) {
-        var userAgentInfo = [];
+    constructor(telemetry) {
+        const userAgentInfo = [];
         {
             if (telemetry) {
-                // FIXME: replace() only replaces the first space. And we have no idea why we need to replace spaces in the first place.
-                // But fixing this would be a breaking change. Logged an issue here: https://github.com/Azure/azure-sdk-for-js/issues/10793
-                var telemetryString = (telemetry.userAgentPrefix || "").replace(" ", "");
+                const telemetryString = telemetry.userAgentPrefix || "";
                 if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {
                     userAgentInfo.push(telemetryString);
                 }
             }
             // e.g. azsdk-js-storageblob/10.0.0
-            var libInfo = "azsdk-js-storageblob/" + SDK_VERSION;
+            const libInfo = `azsdk-js-storageblob/${SDK_VERSION}`;
             if (userAgentInfo.indexOf(libInfo) === -1) {
                 userAgentInfo.push(libInfo);
             }
             // e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)
-            var runtimeInfo = "(NODE-VERSION " + process.version + "; " + os.type() + " " + os.release() + ")";
+            const runtimeInfo = `(NODE-VERSION ${process.version}; ${os.type()} ${os.release()})`;
             if (userAgentInfo.indexOf(runtimeInfo) === -1) {
                 userAgentInfo.push(runtimeInfo);
             }
@@ -22098,24 +24018,35 @@ var TelemetryPolicyFactory = /** @class */ (function () {
     /**
      * Creates a TelemetryPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {TelemetryPolicy}
-     * @memberof TelemetryPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    TelemetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new TelemetryPolicy(nextPolicy, options, this.telemetryString);
-    };
-    return TelemetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var _defaultHttpClient = new coreHttp.DefaultHttpClient();
+const _defaultHttpClient = new coreHttp.DefaultHttpClient();
 function getCachedDefaultHttpClient() {
     return _defaultHttpClient;
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
+/**
+ * A helper to decide if a given argument satisfies the Pipeline contract
+ * @param pipeline - An argument that may be a Pipeline
+ * @returns true when the argument satisfies the Pipeline contract
+ */
+function isPipelineLike(pipeline) {
+    if (!pipeline || typeof pipeline !== "object") {
+        return false;
+    }
+    const castPipeline = pipeline;
+    return (Array.isArray(castPipeline.factories) &&
+        typeof castPipeline.options === "object" &&
+        typeof castPipeline.toServiceClientOptions === "function");
+}
 /**
  * A Pipeline class containing HTTP request policies.
  * You can create a default Pipeline by calling {@link newPipeline}.
@@ -22123,65 +24054,59 @@ function getCachedDefaultHttpClient() {
  *
  * Refer to {@link newPipeline} and provided policies before implementing your
  * customized Pipeline.
- *
- * @export
- * @class Pipeline
  */
-var Pipeline = /** @class */ (function () {
+class Pipeline {
     /**
      * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
      *
-     * @param {RequestPolicyFactory[]} factories
-     * @param {PipelineOptions} [options={}]
-     * @memberof Pipeline
+     * @param factories -
+     * @param options -
      */
-    function Pipeline(factories, options) {
-        if (options === void 0) { options = {}; }
+    constructor(factories, options = {}) {
         this.factories = factories;
         // when options.httpClient is not specified, passing in a DefaultHttpClient instance to
         // avoid each client creating its own http client.
-        this.options = tslib.__assign(tslib.__assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
+        this.options = Object.assign(Object.assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
     }
     /**
      * Transfer Pipeline object to ServiceClientOptions object which is required by
      * ServiceClient constructor.
      *
-     * @returns {ServiceClientOptions} The ServiceClientOptions object from this Pipeline.
-     * @memberof Pipeline
+     * @returns The ServiceClientOptions object from this Pipeline.
      */
-    Pipeline.prototype.toServiceClientOptions = function () {
+    toServiceClientOptions() {
         return {
             httpClient: this.options.httpClient,
             requestPolicyFactories: this.factories
         };
-    };
-    return Pipeline;
-}());
+    }
+}
 /**
  * Creates a new Pipeline object with Credential provided.
  *
- * @export
- * @param {StorageSharedKeyCredential | AnonymousCredential | TokenCredential} credential  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the @azure/identity package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
- * @param {StoragePipelineOptions} [pipelineOptions] Optional. Options.
- * @returns {Pipeline} A new Pipeline object.
+ * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
+ * @param pipelineOptions - Optional. Options.
+ * @returns A new Pipeline object.
  */
-function newPipeline(credential, pipelineOptions) {
-    if (pipelineOptions === void 0) { pipelineOptions = {}; }
+function newPipeline(credential, pipelineOptions = {}) {
     if (credential === undefined) {
         credential = new AnonymousCredential();
     }
     // Order is important. Closer to the API at the top & closer to the network at the bottom.
     // The credential's policy factory must appear close to the wire so it can sign any
     // changes made by other factories (like UniqueRequestIDPolicyFactory)
-    var telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
-    var factories = [
+    const telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
+    const factories = [
         coreHttp.tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),
         coreHttp.keepAlivePolicy(pipelineOptions.keepAliveOptions),
         telemetryPolicy,
         coreHttp.generateClientRequestIdPolicy(),
         new StorageBrowserPolicyFactory(),
-        coreHttp.deserializationPolicy(),
         new StorageRetryPolicyFactory(pipelineOptions.retryOptions),
+        // Default deserializationPolicy is provided by protocol layer
+        // Use customized XML char key of "#" so we could deserialize metadata
+        // with "_" key
+        coreHttp.deserializationPolicy(undefined, { xmlCharKey: "#" }),
         coreHttp.logPolicy({
             logger: logger.info,
             allowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,
@@ -22194,2431 +24119,37 @@ function newPipeline(credential, pipelineOptions) {
         factories.push(coreHttp.disableResponseDecompressionPolicy());
     }
     factories.push(coreHttp.isTokenCredential(credential)
-        ? coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes)
+        ? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
         : credential);
     return new Pipeline(factories, pipelineOptions);
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
- *
- * @class RetriableReadableStream
- * @extends {Readable}
- */
-var RetriableReadableStream = /** @class */ (function (_super) {
-    tslib.__extends(RetriableReadableStream, _super);
-    /**
-     * Creates an instance of RetriableReadableStream.
-     *
-     * @param {NodeJS.ReadableStream} source The current ReadableStream returned from getter
-     * @param {ReadableStreamGetter} getter A method calling downloading request returning
-     *                                      a new ReadableStream from specified offset
-     * @param {number} offset Offset position in original data source to read
-     * @param {number} count How much data in original data source to read
-     * @param {RetriableReadableStreamOptions} [options={}]
-     * @memberof RetriableReadableStream
-     */
-    function RetriableReadableStream(source, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.retries = 0;
-        _this.abortHandler = function () {
-            _this.source.pause();
-            _this.emit("error", ABORT_ERROR);
-        };
-        _this.aborter = options.abortSignal || abortController.AbortSignal.none;
-        _this.getter = getter;
-        _this.source = source;
-        _this.start = offset;
-        _this.offset = offset;
-        _this.end = offset + count - 1;
-        _this.maxRetryRequests =
-            options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
-        _this.onProgress = options.onProgress;
-        _this.options = options;
-        _this.aborter.addEventListener("abort", _this.abortHandler);
-        _this.setSourceDataHandler();
-        _this.setSourceEndHandler();
-        _this.setSourceErrorHandler();
-        return _this;
-    }
-    RetriableReadableStream.prototype._read = function () {
-        if (!this.aborter.aborted) {
-            this.source.resume();
-        }
-    };
-    RetriableReadableStream.prototype.setSourceDataHandler = function () {
-        var _this = this;
-        this.source.on("data", function (data) {
-            if (_this.options.doInjectErrorOnce) {
-                _this.options.doInjectErrorOnce = undefined;
-                _this.source.pause();
-                _this.source.removeAllListeners("data");
-                _this.source.emit("end");
-                return;
-            }
-            // console.log(
-            //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
-            // );
-            _this.offset += data.length;
-            if (_this.onProgress) {
-                _this.onProgress({ loadedBytes: _this.offset - _this.start });
-            }
-            if (!_this.push(data)) {
-                _this.source.pause();
-            }
-        });
-    };
-    RetriableReadableStream.prototype.setSourceEndHandler = function () {
-        var _this = this;
-        this.source.on("end", function () {
-            // console.log(
-            //   `Source stream emits end, offset: ${
-            //     this.offset
-            //   }, dest end : ${this.end}`
-            // );
-            if (_this.offset - 1 === _this.end) {
-                _this.aborter.removeEventListener("abort", _this.abortHandler);
-                _this.push(null);
-            }
-            else if (_this.offset <= _this.end) {
-                // console.log(
-                //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
-                // );
-                if (_this.retries < _this.maxRetryRequests) {
-                    _this.retries += 1;
-                    _this.getter(_this.offset)
-                        .then(function (newSource) {
-                        _this.source = newSource;
-                        _this.setSourceDataHandler();
-                        _this.setSourceEndHandler();
-                        _this.setSourceErrorHandler();
-                    })
-                        .catch(function (error) {
-                        _this.emit("error", error);
-                    });
-                }
-                else {
-                    _this.emit("error", new Error(
-                    // tslint:disable-next-line:max-line-length
-                    "Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: " + (_this
-                        .offset - 1) + ", data needed offset: " + _this.end + ", retries: " + _this.retries + ", max retries: " + _this.maxRetryRequests));
-                }
-            }
-            else {
-                _this.emit("error", new Error("Data corruption failure: Received more data than original request, data needed offset is " + _this.end + ", received offset: " + (_this.offset - 1)));
-            }
-        });
-    };
-    RetriableReadableStream.prototype.setSourceErrorHandler = function () {
-        var _this = this;
-        this.source.on("error", function (error) {
-            _this.emit("error", error);
-        });
-    };
-    return RetriableReadableStream;
-}(stream.Readable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * BlobDownloadResponse implements BlobDownloadResponseParsed interface, and in Node.js runtime it will
- * automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot
- * trigger retries defined in pipeline retry policy.)
- *
- * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
- * Readable stream.
- *
- * @export
- * @class BlobDownloadResponse
- * @implements {BlobDownloadResponseParsed}
- */
-var BlobDownloadResponse = /** @class */ (function () {
-    /**
-     * Creates an instance of BlobDownloadResponse.
-     *
-     * @param {BlobDownloadResponseParsed} originalResponse
-     * @param {ReadableStreamGetter} getter
-     * @param {number} offset
-     * @param {number} count
-     * @param {RetriableReadableStreamOptions} [options={}]
-     * @memberof BlobDownloadResponse
-     */
-    function BlobDownloadResponse(originalResponse, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        this.originalResponse = originalResponse;
-        this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
-    }
-    Object.defineProperty(BlobDownloadResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         * @type {(BlobType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyCompletedOn;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         * @type {(CopyStatusType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         * @type {(LeaseDurationType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         * @type {(LeaseStateType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         * @type {(LeaseStatusType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "tagCount", {
-        /**
-         * The number of tags associated with the blob
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.tagCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         * @type {(Metadata | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "version", {
-        /**
-         * Indicates the version of the Blob service used
-         * to execute the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "versionId", {
-        /**
-         * Indicates the versionId of the downloaded blob version.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.versionId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         *
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationDestinationPolicyId", {
-        /**
-         * Object Replication Policy Id of the destination blob.
-         *
-         * @readonly
-         * @type {(string| undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationDestinationPolicyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationSourceProperties", {
-        /**
-         * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
-         *
-         * @readonly
-         * @type {(ObjectReplicationPolicy[] | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationSourceProperties;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isSealed", {
-        /**
-         * If this blob has been sealed.
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.isSealed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentAsBlob", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         * @type {(Promise<Blob> | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobBody;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will automatically retry when internal read stream unexpected ends.
-         *
-         * @readonly
-         * @type {(NodeJS.ReadableStream | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         *
-         * @type {HttpResponse}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobDownloadResponse;
-}());
-
 // Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-var AVRO_SYNC_MARKER_SIZE = 16;
-var AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
-var AVRO_CODEC_KEY = "avro.codec";
-var AVRO_SCHEMA_KEY = "avro.schema";
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function arraysEqual(a, b) {
-    if (a === b)
-        return true;
-    if (a == null || b == null)
-        return false;
-    if (a.length != b.length)
-        return false;
-    for (var i = 0; i < a.length; ++i) {
-        if (a[i] !== b[i])
-            return false;
-    }
-    return true;
-}
-
-// Copyright (c) Microsoft Corporation.
-var AvroParser = /** @class */ (function () {
-    function AvroParser() {
-    }
-    /**
-     * Reads a fixed number of bytes from the stream.
-     *
-     * @static
-     * @param {AvroReadable} [stream]
-     * @param {number} [length]
-     * @param {AvroParserReadOptions} [options={}]
-     * @returns {Promise<Uint8Array>}
-     * @memberof AvroParser
-     */
-    AvroParser.readFixedBytes = function (stream, length, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bytes;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, stream.read(length, { abortSignal: options.abortSignal })];
-                    case 1:
-                        bytes = _a.sent();
-                        if (bytes.length != length) {
-                            throw new Error("Hit stream end.");
-                        }
-                        return [2 /*return*/, bytes];
-                }
-            });
-        });
-    };
-    /**
-     * Reads a single byte from the stream.
-     *
-     * @static
-     * @param {AvroReadable} [stream]
-     * @param {AvroParserReadOptions} [options={}]
-     * @returns {Promise<number>}
-     * @memberof AvroParser
-     */
-    AvroParser.readByte = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buf;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 1, options)];
-                    case 1:
-                        buf = _a.sent();
-                        return [2 /*return*/, buf[0]];
-                }
-            });
-        });
-    };
-    // int and long are stored in variable-length zig-zag coding.
-    // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
-    // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
-    AvroParser.readZigZagLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var zigZagEncoded, significanceInBit, byte, haveMoreByte, significanceInFloat, res;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        zigZagEncoded = 0;
-                        significanceInBit = 0;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 2:
-                        byte = _a.sent();
-                        haveMoreByte = byte & 0x80;
-                        zigZagEncoded |= (byte & 0x7f) << significanceInBit;
-                        significanceInBit += 7;
-                        _a.label = 3;
-                    case 3:
-                        if (haveMoreByte && significanceInBit < 28) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4:
-                        if (!haveMoreByte) return [3 /*break*/, 9];
-                        // Switch to float arithmetic
-                        zigZagEncoded = zigZagEncoded;
-                        significanceInFloat = 268435456; // 2 ** 28.
-                        _a.label = 5;
-                    case 5: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 6:
-                        byte = _a.sent();
-                        zigZagEncoded += (byte & 0x7f) * significanceInFloat;
-                        significanceInFloat *= 128; // 2 ** 7
-                        _a.label = 7;
-                    case 7:
-                        if (byte & 0x80) return [3 /*break*/, 5];
-                        _a.label = 8;
-                    case 8:
-                        res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
-                        if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
-                            throw new Error("Integer overflow.");
-                        }
-                        return [2 /*return*/, res];
-                    case 9: return [2 /*return*/, (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1)];
-                }
-            });
-        });
-    };
-    AvroParser.readLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readInt = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readNull = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, null];
-            });
-        });
-    };
-    AvroParser.readBoolean = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var b;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 1:
-                        b = _a.sent();
-                        if (b == 1) {
-                            return [2 /*return*/, true];
-                        }
-                        else if (b == 0) {
-                            return [2 /*return*/, false];
-                        }
-                        else {
-                            throw new Error("Byte was not a boolean.");
-                        }
-                }
-            });
-        });
-    };
-    AvroParser.readFloat = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 4, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat32(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readDouble = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 8, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat64(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readBytes = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var size;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        size = _a.sent();
-                        if (size < 0) {
-                            throw new Error("Bytes size was negative.");
-                        }
-                        return [4 /*yield*/, stream.read(size, { abortSignal: options.abortSignal })];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    AvroParser.readString = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, utf8decoder;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        // polyfill TextDecoder to be backward compatible with older
-                        // nodejs that doesn't expose TextDecoder as a global variable
-                        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
-                            global.TextDecoder = __webpack_require__(669).TextDecoder;
-                        }
-                        utf8decoder = new TextDecoder();
-                        return [2 /*return*/, utf8decoder.decode(u8arr)];
-                }
-            });
-        });
-    };
-    AvroParser.readMapPair = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var key, value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 1:
-                        key = _a.sent();
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 2:
-                        value = _a.sent();
-                        return [2 /*return*/, { key: key, value: value }];
-                }
-            });
-        });
-    };
-    AvroParser.readMap = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readPairMethod, pairs, dict, _i, pairs_1, pair;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readPairMethod = function (stream, options) {
-                            if (options === void 0) { options = {}; }
-                            return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, AvroParser.readMapPair(stream, readItemMethod, options)];
-                                        case 1: return [2 /*return*/, _a.sent()];
-                                    }
-                                });
-                            });
-                        };
-                        return [4 /*yield*/, AvroParser.readArray(stream, readPairMethod, options)];
-                    case 1:
-                        pairs = _a.sent();
-                        dict = {};
-                        for (_i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
-                            pair = pairs_1[_i];
-                            dict[pair.key] = pair.value;
-                        }
-                        return [2 /*return*/, dict];
-                }
-            });
-        });
-    };
-    AvroParser.readArray = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var items, count, item;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        items = [];
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        count = _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        if (!(count != 0)) return [3 /*break*/, 8];
-                        if (!(count < 0)) return [3 /*break*/, 4];
-                        // Ignore block sizes
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 3:
-                        // Ignore block sizes
-                        _a.sent();
-                        count = -count;
-                        _a.label = 4;
-                    case 4:
-                        if (!count--) return [3 /*break*/, 6];
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 5:
-                        item = _a.sent();
-                        items.push(item);
-                        return [3 /*break*/, 4];
-                    case 6: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 7:
-                        count = _a.sent();
-                        return [3 /*break*/, 2];
-                    case 8: return [2 /*return*/, items];
-                }
-            });
-        });
-    };
-    return AvroParser;
-}());
-var AvroComplex;
-(function (AvroComplex) {
-    AvroComplex["RECORD"] = "record";
-    AvroComplex["ENUM"] = "enum";
-    AvroComplex["ARRAY"] = "array";
-    AvroComplex["MAP"] = "map";
-    AvroComplex["UNION"] = "union";
-    AvroComplex["FIXED"] = "fixed";
-})(AvroComplex || (AvroComplex = {}));
-var AvroType = /** @class */ (function () {
-    function AvroType() {
-    }
-    /**
-     * Determines the AvroType from the Avro Schema.
-     */
-    AvroType.fromSchema = function (schema) {
-        if (typeof schema == "string") {
-            return AvroType.fromStringSchema(schema);
-        }
-        else if (Array.isArray(schema)) {
-            return AvroType.fromArraySchema(schema);
-        }
-        else {
-            return AvroType.fromObjectSchema(schema);
-        }
-    };
-    AvroType.fromStringSchema = function (schema) {
-        switch (schema) {
-            case AvroPrimitive.NULL:
-            case AvroPrimitive.BOOLEAN:
-            case AvroPrimitive.INT:
-            case AvroPrimitive.LONG:
-            case AvroPrimitive.FLOAT:
-            case AvroPrimitive.DOUBLE:
-            case AvroPrimitive.BYTES:
-            case AvroPrimitive.STRING:
-                return new AvroPrimitiveType(schema);
-            default:
-                throw new Error("Unexpected Avro type " + schema);
-        }
-    };
-    AvroType.fromArraySchema = function (schema) {
-        return new AvroUnionType(schema.map(AvroType.fromSchema));
-    };
-    AvroType.fromObjectSchema = function (schema) {
-        var type = schema.type;
-        // Primitives can be defined as strings or objects
-        try {
-            return AvroType.fromStringSchema(type);
-        }
-        catch (err) { }
-        switch (type) {
-            case AvroComplex.RECORD:
-                if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
-                }
-                if (!schema.name) {
-                    throw new Error("Required attribute 'name' doesn't exist on schema: " + schema);
-                }
-                var fields = {};
-                if (!schema.fields) {
-                    throw new Error("Required attribute 'fields' doesn't exist on schema: " + schema);
-                }
-                for (var _i = 0, _a = schema.fields; _i < _a.length; _i++) {
-                    var field = _a[_i];
-                    fields[field.name] = AvroType.fromSchema(field.type);
-                }
-                return new AvroRecordType(fields, schema.name);
-            case AvroComplex.ENUM:
-                if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
-                }
-                if (!schema.symbols) {
-                    throw new Error("Required attribute 'symbols' doesn't exist on schema: " + schema);
-                }
-                return new AvroEnumType(schema.symbols);
-            case AvroComplex.MAP:
-                if (!schema.values) {
-                    throw new Error("Required attribute 'values' doesn't exist on schema: " + schema);
-                }
-                return new AvroMapType(AvroType.fromSchema(schema.values));
-            case AvroComplex.ARRAY: // Unused today
-            case AvroComplex.FIXED: // Unused today
-            default:
-                throw new Error("Unexpected Avro type " + type + " in " + schema);
-        }
-    };
-    return AvroType;
-}());
-var AvroPrimitive;
-(function (AvroPrimitive) {
-    AvroPrimitive["NULL"] = "null";
-    AvroPrimitive["BOOLEAN"] = "boolean";
-    AvroPrimitive["INT"] = "int";
-    AvroPrimitive["LONG"] = "long";
-    AvroPrimitive["FLOAT"] = "float";
-    AvroPrimitive["DOUBLE"] = "double";
-    AvroPrimitive["BYTES"] = "bytes";
-    AvroPrimitive["STRING"] = "string";
-})(AvroPrimitive || (AvroPrimitive = {}));
-var AvroPrimitiveType = /** @class */ (function (_super) {
-    tslib.__extends(AvroPrimitiveType, _super);
-    function AvroPrimitiveType(primitive) {
-        var _this = _super.call(this) || this;
-        _this._primitive = primitive;
-        return _this;
-    }
-    AvroPrimitiveType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this._primitive;
-                        switch (_a) {
-                            case AvroPrimitive.NULL: return [3 /*break*/, 1];
-                            case AvroPrimitive.BOOLEAN: return [3 /*break*/, 3];
-                            case AvroPrimitive.INT: return [3 /*break*/, 5];
-                            case AvroPrimitive.LONG: return [3 /*break*/, 7];
-                            case AvroPrimitive.FLOAT: return [3 /*break*/, 9];
-                            case AvroPrimitive.DOUBLE: return [3 /*break*/, 11];
-                            case AvroPrimitive.BYTES: return [3 /*break*/, 13];
-                            case AvroPrimitive.STRING: return [3 /*break*/, 15];
-                        }
-                        return [3 /*break*/, 17];
-                    case 1: return [4 /*yield*/, AvroParser.readNull()];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3: return [4 /*yield*/, AvroParser.readBoolean(stream, options)];
-                    case 4: return [2 /*return*/, _b.sent()];
-                    case 5: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 6: return [2 /*return*/, _b.sent()];
-                    case 7: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 8: return [2 /*return*/, _b.sent()];
-                    case 9: return [4 /*yield*/, AvroParser.readFloat(stream, options)];
-                    case 10: return [2 /*return*/, _b.sent()];
-                    case 11: return [4 /*yield*/, AvroParser.readDouble(stream, options)];
-                    case 12: return [2 /*return*/, _b.sent()];
-                    case 13: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 14: return [2 /*return*/, _b.sent()];
-                    case 15: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 16: return [2 /*return*/, _b.sent()];
-                    case 17: throw new Error("Unknown Avro Primitive");
-                }
-            });
-        });
-    };
-    return AvroPrimitiveType;
-}(AvroType));
-var AvroEnumType = /** @class */ (function (_super) {
-    tslib.__extends(AvroEnumType, _super);
-    function AvroEnumType(symbols) {
-        var _this = _super.call(this) || this;
-        _this._symbols = symbols;
-        return _this;
-    }
-    AvroEnumType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        value = _a.sent();
-                        return [2 /*return*/, this._symbols[value]];
-                }
-            });
-        });
-    };
-    return AvroEnumType;
-}(AvroType));
-var AvroUnionType = /** @class */ (function (_super) {
-    tslib.__extends(AvroUnionType, _super);
-    function AvroUnionType(types) {
-        var _this = _super.call(this) || this;
-        _this._types = types;
-        return _this;
-    }
-    AvroUnionType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var typeIndex;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        typeIndex = _a.sent();
-                        return [4 /*yield*/, this._types[typeIndex].read(stream, options)];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroUnionType;
-}(AvroType));
-var AvroMapType = /** @class */ (function (_super) {
-    tslib.__extends(AvroMapType, _super);
-    function AvroMapType(itemType) {
-        var _this = _super.call(this) || this;
-        _this._itemType = itemType;
-        return _this;
-    }
-    AvroMapType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readItemMethod;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readItemMethod = function (s, options) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0: return [4 /*yield*/, this._itemType.read(s, options)];
-                                    case 1: return [2 /*return*/, _a.sent()];
-                                }
-                            });
-                        }); };
-                        return [4 /*yield*/, AvroParser.readMap(stream, readItemMethod, options)];
-                    case 1: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroMapType;
-}(AvroType));
-var AvroRecordType = /** @class */ (function (_super) {
-    tslib.__extends(AvroRecordType, _super);
-    function AvroRecordType(fields, name) {
-        var _this = _super.call(this) || this;
-        _this._fields = fields;
-        _this._name = name;
-        return _this;
-    }
-    AvroRecordType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var record, _a, _b, _i, key, _c, _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        record = {};
-                        record["$schema"] = this._name;
-                        _a = [];
-                        for (_b in this._fields)
-                            _a.push(_b);
-                        _i = 0;
-                        _e.label = 1;
-                    case 1:
-                        if (!(_i < _a.length)) return [3 /*break*/, 4];
-                        key = _a[_i];
-                        if (!this._fields.hasOwnProperty(key)) return [3 /*break*/, 3];
-                        _c = record;
-                        _d = key;
-                        return [4 /*yield*/, this._fields[key].read(stream, options)];
-                    case 2:
-                        _c[_d] = _e.sent();
-                        _e.label = 3;
-                    case 3:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/, record];
-                }
-            });
-        });
-    };
-    return AvroRecordType;
-}(AvroType));
-
-// Copyright (c) Microsoft Corporation.
-var AvroReader = /** @class */ (function () {
-    function AvroReader(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
-        this._dataStream = dataStream;
-        this._headerStream = headerStream || dataStream;
-        this._initialized = false;
-        this._blockOffset = currentBlockOffset || 0;
-        this._objectIndex = indexWithinCurrentBlock || 0;
-        this._initialBlockOffset = currentBlockOffset || 0;
-    }
-    Object.defineProperty(AvroReader.prototype, "blockOffset", {
-        get: function () {
-            return this._blockOffset;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(AvroReader.prototype, "objectIndex", {
-        get: function () {
-            return this._objectIndex;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReader.prototype.initialize = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var header, _a, codec, _b, schema, _c, i;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
-                            abortSignal: options.abortSignal
-                        })];
-                    case 1:
-                        header = _d.sent();
-                        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
-                            throw new Error("Stream is not an Avro file.");
-                        }
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a = this;
-                        return [4 /*yield*/, AvroParser.readMap(this._headerStream, AvroParser.readString, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 2:
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a._metadata = _d.sent();
-                        codec = this._metadata[AVRO_CODEC_KEY];
-                        if (!(codec == undefined || codec == "null")) {
-                            throw new Error("Codecs are not supported");
-                        }
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b = this;
-                        return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 3:
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b._syncMarker = _d.sent();
-                        schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
-                        this._itemType = AvroType.fromSchema(schema);
-                        if (this._blockOffset == 0) {
-                            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        }
-                        _c = this;
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 4:
-                        _c._itemsRemainingInBlock = _d.sent();
-                        // skip block length
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 5:
-                        // skip block length
-                        _d.sent();
-                        this._initialized = true;
-                        if (!(this._objectIndex && this._objectIndex > 0)) return [3 /*break*/, 9];
-                        i = 0;
-                        _d.label = 6;
-                    case 6:
-                        if (!(i < this._objectIndex)) return [3 /*break*/, 9];
-                        return [4 /*yield*/, this._itemType.read(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 7:
-                        _d.sent();
-                        this._itemsRemainingInBlock--;
-                        _d.label = 8;
-                    case 8:
-                        i++;
-                        return [3 /*break*/, 6];
-                    case 9: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    AvroReader.prototype.hasNext = function () {
-        return !this._initialized || this._itemsRemainingInBlock > 0;
-    };
-    AvroReader.prototype.parseObjects = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function parseObjects_1() {
-            var result, marker, _a, err_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!!this._initialized) return [3 /*break*/, 2];
-                        return [4 /*yield*/, tslib.__await(this.initialize(options))];
-                    case 1:
-                        _b.sent();
-                        _b.label = 2;
-                    case 2:
-                        if (!this.hasNext()) return [3 /*break*/, 13];
-                        return [4 /*yield*/, tslib.__await(this._itemType.read(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 3:
-                        result = _b.sent();
-                        this._itemsRemainingInBlock--;
-                        this._objectIndex++;
-                        if (!(this._itemsRemainingInBlock == 0)) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 4:
-                        marker = _b.sent();
-                        this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        this._objectIndex = 0;
-                        if (!arraysEqual(this._syncMarker, marker)) {
-                            throw new Error("Stream is not a valid Avro file.");
-                        }
-                        _b.label = 5;
-                    case 5:
-                        _b.trys.push([5, 7, , 8]);
-                        _a = this;
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 6:
-                        _a._itemsRemainingInBlock = _b.sent();
-                        return [3 /*break*/, 8];
-                    case 7:
-                        err_1 = _b.sent();
-                        // We hit the end of the stream.
-                        this._itemsRemainingInBlock = 0;
-                        return [3 /*break*/, 8];
-                    case 8:
-                        if (!(this._itemsRemainingInBlock > 0)) return [3 /*break*/, 10];
-                        // Ignore block size
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }))];
-                    case 9:
-                        // Ignore block size
-                        _b.sent();
-                        _b.label = 10;
-                    case 10: return [4 /*yield*/, tslib.__await(result)];
-                    case 11: return [4 /*yield*/, _b.sent()];
-                    case 12:
-                        _b.sent();
-                        return [3 /*break*/, 2];
-                    case 13: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return AvroReader;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-var AvroReadable = /** @class */ (function () {
-    function AvroReadable() {
-    }
-    return AvroReadable;
-}());
-
-// Copyright (c) Microsoft Corporation.
-var ABORT_ERROR$1 = new abortController.AbortError("Reading from the avro stream was aborted.");
-var AvroReadableFromStream = /** @class */ (function (_super) {
-    tslib.__extends(AvroReadableFromStream, _super);
-    function AvroReadableFromStream(readable) {
-        var _this = _super.call(this) || this;
-        _this._readable = readable;
-        _this._position = 0;
-        return _this;
-    }
-    AvroReadableFromStream.prototype.toUint8Array = function (data) {
-        if (typeof data === "string") {
-            return Buffer.from(data);
-        }
-        return data;
-    };
-    Object.defineProperty(AvroReadableFromStream.prototype, "position", {
-        get: function () {
-            return this._position;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReadableFromStream.prototype.read = function (size, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var chunk;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
-                    throw ABORT_ERROR$1;
-                }
-                if (size < 0) {
-                    throw new Error("size parameter should be positive: " + size);
-                }
-                if (size === 0) {
-                    return [2 /*return*/, new Uint8Array()];
-                }
-                if (!this._readable.readable) {
-                    throw new Error("Stream no longer readable.");
-                }
-                chunk = this._readable.read(size);
-                if (chunk) {
-                    this._position += chunk.length;
-                    // chunk.length maybe less than desired size if the stream ends.
-                    return [2 /*return*/, this.toUint8Array(chunk)];
-                }
-                else {
-                    // register callback to wait for enough data to read
-                    return [2 /*return*/, new Promise(function (resolve, reject) {
-                            var cleanUp = function () {
-                                _this._readable.removeListener("readable", readableCallback);
-                                _this._readable.removeListener("error", rejectCallback);
-                                _this._readable.removeListener("end", rejectCallback);
-                                _this._readable.removeListener("close", rejectCallback);
-                                if (options.abortSignal) {
-                                    options.abortSignal.removeEventListener("abort", abortHandler);
-                                }
-                            };
-                            var readableCallback = function () {
-                                var chunk = _this._readable.read(size);
-                                if (chunk) {
-                                    _this._position += chunk.length;
-                                    cleanUp();
-                                    // chunk.length maybe less than desired size if the stream ends.
-                                    resolve(_this.toUint8Array(chunk));
-                                }
-                            };
-                            var rejectCallback = function () {
-                                cleanUp();
-                                reject();
-                            };
-                            var abortHandler = function () {
-                                cleanUp();
-                                reject(ABORT_ERROR$1);
-                            };
-                            _this._readable.on("readable", readableCallback);
-                            _this._readable.once("error", rejectCallback);
-                            _this._readable.once("end", rejectCallback);
-                            _this._readable.once("close", rejectCallback);
-                            if (options.abortSignal) {
-                                options.abortSignal.addEventListener("abort", abortHandler);
-                            }
-                        })];
-                }
-            });
-        });
-    };
-    return AvroReadableFromStream;
-}(AvroReadable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
- *
- * @class BlobQuickQueryStream
- * @extends {Readable}
- */
-var BlobQuickQueryStream = /** @class */ (function (_super) {
-    tslib.__extends(BlobQuickQueryStream, _super);
-    /**
-     * Creates an instance of BlobQuickQueryStream.
-     *
-     * @param {NodeJS.ReadableStream} source The current ReadableStream returned from getter
-     * @param {BlobQuickQueryStreamOptions} [options={}]
-     * @memberof BlobQuickQueryStream
-     */
-    function BlobQuickQueryStream(source, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.source = source;
-        _this.onProgress = options.onProgress;
-        _this.onError = options.onError;
-        _this.avroReader = new AvroReader(new AvroReadableFromStream(_this.source));
-        _this.avroIter = _this.avroReader.parseObjects({ abortSignal: options.abortSignal });
-        return _this;
-    }
-    BlobQuickQueryStream.prototype._read = function () {
-        var _this = this;
-        this.readInternal().catch(function (err) {
-            _this.emit("error", err);
-        });
-    };
-    BlobQuickQueryStream.prototype.readInternal = function () {
-        var e_1, _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, _c, obj, schema, exit, data, bytesScanned, totalBytes, fatal, name_1, description, position, e_1_1;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 5, 6, 11]);
-                        _b = tslib.__asyncValues(this.avroIter);
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, _b.next()];
-                    case 2:
-                        if (!(_c = _d.sent(), !_c.done)) return [3 /*break*/, 4];
-                        obj = _c.value;
-                        schema = obj.$schema;
-                        if (typeof schema !== "string") {
-                            throw Error("Missing schema in avro record.");
-                        }
-                        exit = false;
-                        switch (schema) {
-                            case "com.microsoft.azure.storage.queryBlobContents.resultData":
-                                data = obj.data;
-                                if (data instanceof Uint8Array === false) {
-                                    throw Error("Invalid data in avro result record.");
-                                }
-                                if (!this.push(Buffer.from(data))) {
-                                    exit = true;
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.progress":
-                                bytesScanned = obj.bytesScanned;
-                                if (typeof bytesScanned !== "number") {
-                                    throw Error("Invalid bytesScanned in avro progress record.");
-                                }
-                                if (this.onProgress) {
-                                    this.onProgress({ loadedBytes: bytesScanned });
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.end":
-                                if (this.onProgress) {
-                                    totalBytes = obj.totalBytes;
-                                    if (typeof totalBytes !== "number") {
-                                        throw Error("Invalid totalBytes in avro end record.");
-                                    }
-                                    this.onProgress({ loadedBytes: totalBytes });
-                                }
-                                this.push(null);
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.error":
-                                if (this.onError) {
-                                    fatal = obj.fatal;
-                                    if (typeof fatal !== "boolean") {
-                                        throw Error("Invalid fatal in avro error record.");
-                                    }
-                                    name_1 = obj.name;
-                                    if (typeof name_1 !== "string") {
-                                        throw Error("Invalid name in avro error record.");
-                                    }
-                                    description = obj.description;
-                                    if (typeof description !== "string") {
-                                        throw Error("Invalid description in avro error record.");
-                                    }
-                                    position = obj.position;
-                                    if (typeof position !== "number") {
-                                        throw Error("Invalid position in avro error record.");
-                                    }
-                                    this.onError({
-                                        position: position,
-                                        name: name_1,
-                                        isFatal: fatal,
-                                        description: description
-                                    });
-                                }
-                                break;
-                            default:
-                                throw Error("Unknown schema " + schema + " in avro progress record.");
-                        }
-                        if (exit) {
-                            return [3 /*break*/, 4];
-                        }
-                        _d.label = 3;
-                    case 3: return [3 /*break*/, 1];
-                    case 4: return [3 /*break*/, 11];
-                    case 5:
-                        e_1_1 = _d.sent();
-                        e_1 = { error: e_1_1 };
-                        return [3 /*break*/, 11];
-                    case 6:
-                        _d.trys.push([6, , 9, 10]);
-                        if (!(_c && !_c.done && (_a = _b.return))) return [3 /*break*/, 8];
-                        return [4 /*yield*/, _a.call(_b)];
-                    case 7:
-                        _d.sent();
-                        _d.label = 8;
-                    case 8: return [3 /*break*/, 10];
-                    case 9:
-                        if (e_1) throw e_1.error;
-                        return [7 /*endfinally*/];
-                    case 10: return [7 /*endfinally*/];
-                    case 11: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobQuickQueryStream;
-}(stream.Readable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
- * parse avor data returned by blob query.
- *
- * @export
- * @class BlobQueryResponse
- * @implements {BlobDownloadResponseModel}
- */
-var BlobQueryResponse = /** @class */ (function () {
-    /**
-     * Creates an instance of BlobQueryResponse.
-     *
-     * @param {BlobQueryResponseModel} originalResponse
-     * @param {BlobQuickQueryStreamOptions} [options={}]
-     * @memberof BlobQueryResponse
-     */
-    function BlobQueryResponse(originalResponse, options) {
-        if (options === void 0) { options = {}; }
-        this.originalResponse = originalResponse;
-        this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
-    }
-    Object.defineProperty(BlobQueryResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         * @type {(BlobType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         * @type {(CopyStatusType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         * @type {(LeaseDurationType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         * @type {(LeaseStateType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         * @type {(LeaseStatusType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         * @type {(Metadata | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "version", {
-        /**
-         * Indicates the version of the File service used
-         * to execute the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         *
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobBody", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         * @type {(Promise<Blob> | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will parse avor data returned by blob query.
-         *
-         * @readonly
-         * @type {(NodeJS.ReadableStream | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         *
-         * @type {HttpResponse}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobQueryResponse;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
 /**
  * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
- *
- * @export
- * @class StorageSharedKeyCredentialPolicy
- * @extends {CredentialPolicy}
  */
-var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredentialPolicy, _super);
+class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of StorageSharedKeyCredentialPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {StorageSharedKeyCredential} factory
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param factory -
      */
-    function StorageSharedKeyCredentialPolicy(nextPolicy, options, factory) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.factory = factory;
-        return _this;
+    constructor(nextPolicy, options, factory) {
+        super(nextPolicy, options);
+        this.factory = factory;
     }
     /**
      * Signs request.
      *
-     * @protected
-     * @param {WebResource} request
-     * @returns {WebResource}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
         if (request.body && typeof request.body === "string" && request.body.length > 0) {
             request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
         }
-        var stringToSign = [
+        const stringToSign = [
             request.method.toUpperCase(),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
@@ -24635,26 +24166,23 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             "\n" +
             this.getCanonicalizedHeadersString(request) +
             this.getCanonicalizedResourceString(request);
-        var signature = this.factory.computeHMACSHA256(stringToSign);
-        request.headers.set(HeaderConstants.AUTHORIZATION, "SharedKey " + this.factory.accountName + ":" + signature);
+        const signature = this.factory.computeHMACSHA256(stringToSign);
+        request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
         // console.log(`[URL]:${request.url}`);
         // console.log(`[HEADERS]:${request.headers.toString()}`);
         // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
         // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
         return request;
-    };
+    }
     /**
      * Retrieve header value according to shared key sign rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
      *
-     * @private
-     * @param {WebResource} request
-     * @param {string} headerName
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
+     * @param headerName -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getHeaderValueToSign = function (request, headerName) {
-        var value = request.headers.get(headerName);
+    getHeaderValueToSign(request, headerName) {
+        const value = request.headers.get(headerName);
         if (!value) {
             return "";
         }
@@ -24665,7 +24193,7 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             return "";
         }
         return value;
-    };
+    }
     /**
      * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
      * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
@@ -24677,159 +24205,2980 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      * 6. Finally, append a new-line character to each canonicalized header in the resulting list.
      *    Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
      *
-     * @private
-     * @param {WebResource} request
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedHeadersString = function (request) {
-        var headersArray = request.headers.headersArray().filter(function (value) {
+    getCanonicalizedHeadersString(request) {
+        let headersArray = request.headers.headersArray().filter((value) => {
             return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
         });
-        headersArray.sort(function (a, b) {
+        headersArray.sort((a, b) => {
             return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
         });
         // Remove duplicate headers
-        headersArray = headersArray.filter(function (value, index, array) {
+        headersArray = headersArray.filter((value, index, array) => {
             if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
                 return false;
             }
             return true;
         });
-        var canonicalizedHeadersStringToSign = "";
-        headersArray.forEach(function (header) {
-            canonicalizedHeadersStringToSign += header.name
+        let canonicalizedHeadersStringToSign = "";
+        headersArray.forEach((header) => {
+            canonicalizedHeadersStringToSign += `${header.name
                 .toLowerCase()
-                .trimRight() + ":" + header.value.trimLeft() + "\n";
+                .trimRight()}:${header.value.trimLeft()}\n`;
         });
         return canonicalizedHeadersStringToSign;
-    };
+    }
     /**
      * Retrieves the webResource canonicalized resource string.
      *
-     * @private
-     * @param {WebResource} request
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedResourceString = function (request) {
-        var path = getURLPath(request.url) || "/";
-        var canonicalizedResourceString = "";
-        canonicalizedResourceString += "/" + this.factory.accountName + path;
-        var queries = getURLQueries(request.url);
-        var lowercaseQueries = {};
+    getCanonicalizedResourceString(request) {
+        const path = getURLPath(request.url) || "/";
+        let canonicalizedResourceString = "";
+        canonicalizedResourceString += `/${this.factory.accountName}${path}`;
+        const queries = getURLQueries(request.url);
+        const lowercaseQueries = {};
         if (queries) {
-            var queryKeys = [];
-            for (var key in queries) {
-                if (queries.hasOwnProperty(key)) {
-                    var lowercaseKey = key.toLowerCase();
+            const queryKeys = [];
+            for (const key in queries) {
+                if (Object.prototype.hasOwnProperty.call(queries, key)) {
+                    const lowercaseKey = key.toLowerCase();
                     lowercaseQueries[lowercaseKey] = queries[key];
                     queryKeys.push(lowercaseKey);
                 }
             }
             queryKeys.sort();
-            for (var _i = 0, queryKeys_1 = queryKeys; _i < queryKeys_1.length; _i++) {
-                var key = queryKeys_1[_i];
-                canonicalizedResourceString += "\n" + key + ":" + decodeURIComponent(lowercaseQueries[key]);
+            for (const key of queryKeys) {
+                canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
             }
         }
         return canonicalizedResourceString;
-    };
-    return StorageSharedKeyCredentialPolicy;
-}(CredentialPolicy));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * ONLY AVAILABLE IN NODE.JS RUNTIME.
  *
  * StorageSharedKeyCredential for account key authorization of Azure Storage service.
- *
- * @export
- * @class StorageSharedKeyCredential
- * @extends {Credential}
  */
-var StorageSharedKeyCredential = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredential, _super);
+class StorageSharedKeyCredential extends Credential {
     /**
      * Creates an instance of StorageSharedKeyCredential.
-     * @param {string} accountName
-     * @param {string} accountKey
-     * @memberof StorageSharedKeyCredential
+     * @param accountName -
+     * @param accountKey -
      */
-    function StorageSharedKeyCredential(accountName, accountKey) {
-        var _this = _super.call(this) || this;
-        _this.accountName = accountName;
-        _this.accountKey = Buffer.from(accountKey, "base64");
-        return _this;
+    constructor(accountName, accountKey) {
+        super();
+        this.accountName = accountName;
+        this.accountKey = Buffer.from(accountKey, "base64");
     }
     /**
      * Creates a StorageSharedKeyCredentialPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageSharedKeyCredentialPolicy}
-     * @memberof StorageSharedKeyCredential
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageSharedKeyCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageSharedKeyCredentialPolicy(nextPolicy, options, this);
-    };
+    }
     /**
      * Generates a hash signature for an HTTP request or for a SAS.
      *
-     * @param {string} stringToSign
-     * @returns {string}
-     * @memberof StorageSharedKeyCredential
+     * @param stringToSign -
      */
-    StorageSharedKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         return crypto.createHmac("sha256", this.accountKey)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return StorageSharedKeyCredential;
-}(Credential));
+    }
+}
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var packageName = "azure-storage-blob";
-var packageVersion = "12.2.1";
-var StorageClientContext = /** @class */ (function (_super) {
-    tslib.__extends(StorageClientContext, _super);
+const packageName = "azure-storage-blob";
+const packageVersion = "12.8.0";
+class StorageClientContext extends coreHttp.ServiceClient {
     /**
      * Initializes a new instance of the StorageClientContext class.
-     * @param url The URL of the service account, container, or blob that is the targe of the desired
-     * operation.
-     * @param [options] The parameter options
+     * @param url The URL of the service account, container, or blob that is the target of the desired
+     *            operation.
+     * @param options The parameter options
      */
-    function StorageClientContext(url, options) {
-        var _this = this;
-        if (url == undefined) {
-            throw new Error("'url' cannot be null.");
+    constructor(url, options) {
+        if (url === undefined) {
+            throw new Error("'url' cannot be null");
         }
+        // Initializing default values for options
         if (!options) {
             options = {};
         }
         if (!options.userAgent) {
-            var defaultUserAgent = coreHttp.getDefaultUserAgentValue();
-            options.userAgent = packageName + "/" + packageVersion + " " + defaultUserAgent;
+            const defaultUserAgent = coreHttp.getDefaultUserAgentValue();
+            options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
         }
-        _this = _super.call(this, undefined, options) || this;
-        _this.version = "2019-12-12";
-        _this.baseUri = "{url}";
-        _this.requestContentType = "application/json; charset=utf-8";
-        _this.url = url;
-        return _this;
+        super(undefined, options);
+        this.requestContentType = "application/json; charset=utf-8";
+        this.baseUri = options.endpoint || "{url}";
+        // Parameter assignments
+        this.url = url;
+        // Assigning values to Constant parameters
+        this.version = options.version || "2020-10-02";
     }
-    return StorageClientContext;
-}(coreHttp.ServiceClient));
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
+/**
+ * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
+ * and etc.
+ */
+class StorageClient {
+    /**
+     * Creates an instance of StorageClient.
+     * @param url - url to resource
+     * @param pipeline - request policy pipeline.
+     */
+    constructor(url, pipeline) {
+        // URL should be encoded and only once, protocol layer shouldn't encode URL again
+        this.url = escapeURLPath(url);
+        this.accountName = getAccountNameFromUrl(url);
+        this.pipeline = pipeline;
+        this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
+        this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
+        this.credential = new AnonymousCredential();
+        for (const factory of this.pipeline.factories) {
+            if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
+                factory instanceof AnonymousCredential) {
+                this.credential = factory;
+            }
+            else if (coreHttp.isTokenCredential(factory.credential)) {
+                // Only works if the factory has been attached a "credential" property.
+                // We do that in newPipeline() when using TokenCredential.
+                this.credential = factory.credential;
+            }
+        }
+        // Override protocol layer's default content-type
+        const storageClientContext = this.storageClientContext;
+        storageClientContext.requestContentType = undefined;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * Creates a span using the global tracer.
+ * @internal
+ */
+const createSpan = coreTracing.createSpanFunction({
+    packagePrefix: "Azure.Storage.Blob",
+    namespace: "Microsoft.Storage"
+});
+/**
+ * @internal
+ *
+ * Adapt the tracing options from OperationOptions to what they need to be for
+ * RequestOptionsBase (when we update to later OpenTelemetry versions this is now
+ * two separate fields, not just one).
+ */
+function convertTracingToRequestOptionsBase(options) {
+    var _a, _b;
+    return {
+        // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+        spanOptions: (_a = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions,
+        tracingContext: (_b = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _b === void 0 ? void 0 : _b.tracingContext
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting
+ * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
+ * the values are set, this should be serialized with toString and set as the permissions field on a
+ * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class BlobSASPermissions {
+    constructor() {
+        /**
+         * Specifies Read access granted.
+         */
+        this.read = false;
+        /**
+         * Specifies Add access granted.
+         */
+        this.add = false;
+        /**
+         * Specifies Create access granted.
+         */
+        this.create = false;
+        /**
+         * Specifies Write access granted.
+         */
+        this.write = false;
+        /**
+         * Specifies Delete access granted.
+         */
+        this.delete = false;
+        /**
+         * Specifies Delete version access granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Specifies Move access granted.
+         */
+        this.move = false;
+        /**
+         * Specifies Execute access granted.
+         */
+        this.execute = false;
+        /**
+         * Specifies SetImmutabilityPolicy access granted.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid permission.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const blobSASPermissions = new BlobSASPermissions();
+        for (const char of permissions) {
+            switch (char) {
+                case "r":
+                    blobSASPermissions.read = true;
+                    break;
+                case "a":
+                    blobSASPermissions.add = true;
+                    break;
+                case "c":
+                    blobSASPermissions.create = true;
+                    break;
+                case "w":
+                    blobSASPermissions.write = true;
+                    break;
+                case "d":
+                    blobSASPermissions.delete = true;
+                    break;
+                case "x":
+                    blobSASPermissions.deleteVersion = true;
+                    break;
+                case "t":
+                    blobSASPermissions.tag = true;
+                    break;
+                case "m":
+                    blobSASPermissions.move = true;
+                    break;
+                case "e":
+                    blobSASPermissions.execute = true;
+                    break;
+                case "i":
+                    blobSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission: ${char}`);
+            }
+        }
+        return blobSASPermissions;
+    }
+    /**
+     * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const blobSASPermissions = new BlobSASPermissions();
+        if (permissionLike.read) {
+            blobSASPermissions.read = true;
+        }
+        if (permissionLike.add) {
+            blobSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            blobSASPermissions.create = true;
+        }
+        if (permissionLike.write) {
+            blobSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            blobSASPermissions.delete = true;
+        }
+        if (permissionLike.deleteVersion) {
+            blobSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.tag) {
+            blobSASPermissions.tag = true;
+        }
+        if (permissionLike.move) {
+            blobSASPermissions.move = true;
+        }
+        if (permissionLike.execute) {
+            blobSASPermissions.execute = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            blobSASPermissions.setImmutabilityPolicy = true;
+        }
+        return blobSASPermissions;
+    }
+    /**
+     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
+     * order accepted by the service.
+     *
+     * @returns A string which represents the BlobSASPermissions
+     */
+    toString() {
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.move) {
+            permissions.push("m");
+        }
+        if (this.execute) {
+            permissions.push("e");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.
+ * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
+ * Once all the values are set, this should be serialized with toString and set as the permissions field on a
+ * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class ContainerSASPermissions {
+    constructor() {
+        /**
+         * Specifies Read access granted.
+         */
+        this.read = false;
+        /**
+         * Specifies Add access granted.
+         */
+        this.add = false;
+        /**
+         * Specifies Create access granted.
+         */
+        this.create = false;
+        /**
+         * Specifies Write access granted.
+         */
+        this.write = false;
+        /**
+         * Specifies Delete access granted.
+         */
+        this.delete = false;
+        /**
+         * Specifies Delete version access granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Specifies List access granted.
+         */
+        this.list = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Specifies Move access granted.
+         */
+        this.move = false;
+        /**
+         * Specifies Execute access granted.
+         */
+        this.execute = false;
+        /**
+         * Specifies SetImmutabilityPolicy access granted.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid permission.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        for (const char of permissions) {
+            switch (char) {
+                case "r":
+                    containerSASPermissions.read = true;
+                    break;
+                case "a":
+                    containerSASPermissions.add = true;
+                    break;
+                case "c":
+                    containerSASPermissions.create = true;
+                    break;
+                case "w":
+                    containerSASPermissions.write = true;
+                    break;
+                case "d":
+                    containerSASPermissions.delete = true;
+                    break;
+                case "l":
+                    containerSASPermissions.list = true;
+                    break;
+                case "t":
+                    containerSASPermissions.tag = true;
+                    break;
+                case "x":
+                    containerSASPermissions.deleteVersion = true;
+                    break;
+                case "m":
+                    containerSASPermissions.move = true;
+                    break;
+                case "e":
+                    containerSASPermissions.execute = true;
+                    break;
+                case "i":
+                    containerSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission ${char}`);
+            }
+        }
+        return containerSASPermissions;
+    }
+    /**
+     * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        if (permissionLike.read) {
+            containerSASPermissions.read = true;
+        }
+        if (permissionLike.add) {
+            containerSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            containerSASPermissions.create = true;
+        }
+        if (permissionLike.write) {
+            containerSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            containerSASPermissions.delete = true;
+        }
+        if (permissionLike.list) {
+            containerSASPermissions.list = true;
+        }
+        if (permissionLike.deleteVersion) {
+            containerSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.tag) {
+            containerSASPermissions.tag = true;
+        }
+        if (permissionLike.move) {
+            containerSASPermissions.move = true;
+        }
+        if (permissionLike.execute) {
+            containerSASPermissions.execute = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            containerSASPermissions.setImmutabilityPolicy = true;
+        }
+        return containerSASPermissions;
+    }
+    /**
+     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
+     * order accepted by the service.
+     *
+     * The order of the characters should be as specified here to ensure correctness.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     */
+    toString() {
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.list) {
+            permissions.push("l");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.move) {
+            permissions.push("m");
+        }
+        if (this.execute) {
+            permissions.push("e");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * UserDelegationKeyCredential is only used for generation of user delegation SAS.
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
+ */
+class UserDelegationKeyCredential {
+    /**
+     * Creates an instance of UserDelegationKeyCredential.
+     * @param accountName -
+     * @param userDelegationKey -
+     */
+    constructor(accountName, userDelegationKey) {
+        this.accountName = accountName;
+        this.userDelegationKey = userDelegationKey;
+        this.key = Buffer.from(userDelegationKey.value, "base64");
+    }
+    /**
+     * Generates a hash signature for an HTTP request or for a SAS.
+     *
+     * @param stringToSign -
+     */
+    computeHMACSHA256(stringToSign) {
+        // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
+        return crypto.createHmac("sha256", this.key)
+            .update(stringToSign, "utf8")
+            .digest("base64");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Generate SasIPRange format string. For example:
+ *
+ * "8.8.8.8" or "1.1.1.1-255.255.255.255"
+ *
+ * @param ipRange -
+ */
+function ipRangeToString(ipRange) {
+    return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;
+}
+
+// Copyright (c) Microsoft Corporation.
+(function (SASProtocol) {
+    /**
+     * Protocol that allows HTTPS only
+     */
+    SASProtocol["Https"] = "https";
+    /**
+     * Protocol that allows both HTTPS and HTTP
+     */
+    SASProtocol["HttpsAndHttp"] = "https,http";
+})(exports.SASProtocol || (exports.SASProtocol = {}));
+/**
+ * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
+ * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}
+ * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should
+ * be taken here in case there are existing query parameters, which might affect the appropriate means of appending
+ * these query parameters).
+ *
+ * NOTE: Instances of this class are immutable.
+ */
+class SASQueryParameters {
+    constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
+        this.version = version;
+        this.signature = signature;
+        if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== "string") {
+            // SASQueryParametersOptions
+            this.permissions = permissionsOrOptions.permissions;
+            this.services = permissionsOrOptions.services;
+            this.resourceTypes = permissionsOrOptions.resourceTypes;
+            this.protocol = permissionsOrOptions.protocol;
+            this.startsOn = permissionsOrOptions.startsOn;
+            this.expiresOn = permissionsOrOptions.expiresOn;
+            this.ipRangeInner = permissionsOrOptions.ipRange;
+            this.identifier = permissionsOrOptions.identifier;
+            this.resource = permissionsOrOptions.resource;
+            this.cacheControl = permissionsOrOptions.cacheControl;
+            this.contentDisposition = permissionsOrOptions.contentDisposition;
+            this.contentEncoding = permissionsOrOptions.contentEncoding;
+            this.contentLanguage = permissionsOrOptions.contentLanguage;
+            this.contentType = permissionsOrOptions.contentType;
+            if (permissionsOrOptions.userDelegationKey) {
+                this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;
+                this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;
+                this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;
+                this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;
+                this.signedService = permissionsOrOptions.userDelegationKey.signedService;
+                this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;
+                this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;
+                this.correlationId = permissionsOrOptions.correlationId;
+            }
+        }
+        else {
+            this.services = services;
+            this.resourceTypes = resourceTypes;
+            this.expiresOn = expiresOn;
+            this.permissions = permissionsOrOptions;
+            this.protocol = protocol;
+            this.startsOn = startsOn;
+            this.ipRangeInner = ipRange;
+            this.identifier = identifier;
+            this.resource = resource;
+            this.cacheControl = cacheControl;
+            this.contentDisposition = contentDisposition;
+            this.contentEncoding = contentEncoding;
+            this.contentLanguage = contentLanguage;
+            this.contentType = contentType;
+            if (userDelegationKey) {
+                this.signedOid = userDelegationKey.signedObjectId;
+                this.signedTenantId = userDelegationKey.signedTenantId;
+                this.signedStartsOn = userDelegationKey.signedStartsOn;
+                this.signedExpiresOn = userDelegationKey.signedExpiresOn;
+                this.signedService = userDelegationKey.signedService;
+                this.signedVersion = userDelegationKey.signedVersion;
+                this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;
+                this.correlationId = correlationId;
+            }
+        }
+    }
+    /**
+     * Optional. IP range allowed for this SAS.
+     *
+     * @readonly
+     */
+    get ipRange() {
+        if (this.ipRangeInner) {
+            return {
+                end: this.ipRangeInner.end,
+                start: this.ipRangeInner.start
+            };
+        }
+        return undefined;
+    }
+    /**
+     * Encodes all SAS query parameters into a string that can be appended to a URL.
+     *
+     */
+    toString() {
+        const params = [
+            "sv",
+            "ss",
+            "srt",
+            "spr",
+            "st",
+            "se",
+            "sip",
+            "si",
+            "skoid",
+            "sktid",
+            "skt",
+            "ske",
+            "sks",
+            "skv",
+            "sr",
+            "sp",
+            "sig",
+            "rscc",
+            "rscd",
+            "rsce",
+            "rscl",
+            "rsct",
+            "saoid",
+            "scid"
+        ];
+        const queries = [];
+        for (const param of params) {
+            switch (param) {
+                case "sv":
+                    this.tryAppendQueryParameter(queries, param, this.version);
+                    break;
+                case "ss":
+                    this.tryAppendQueryParameter(queries, param, this.services);
+                    break;
+                case "srt":
+                    this.tryAppendQueryParameter(queries, param, this.resourceTypes);
+                    break;
+                case "spr":
+                    this.tryAppendQueryParameter(queries, param, this.protocol);
+                    break;
+                case "st":
+                    this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);
+                    break;
+                case "se":
+                    this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);
+                    break;
+                case "sip":
+                    this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);
+                    break;
+                case "si":
+                    this.tryAppendQueryParameter(queries, param, this.identifier);
+                    break;
+                case "skoid": // Signed object ID
+                    this.tryAppendQueryParameter(queries, param, this.signedOid);
+                    break;
+                case "sktid": // Signed tenant ID
+                    this.tryAppendQueryParameter(queries, param, this.signedTenantId);
+                    break;
+                case "skt": // Signed key start time
+                    this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);
+                    break;
+                case "ske": // Signed key expiry time
+                    this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);
+                    break;
+                case "sks": // Signed key service
+                    this.tryAppendQueryParameter(queries, param, this.signedService);
+                    break;
+                case "skv": // Signed key version
+                    this.tryAppendQueryParameter(queries, param, this.signedVersion);
+                    break;
+                case "sr":
+                    this.tryAppendQueryParameter(queries, param, this.resource);
+                    break;
+                case "sp":
+                    this.tryAppendQueryParameter(queries, param, this.permissions);
+                    break;
+                case "sig":
+                    this.tryAppendQueryParameter(queries, param, this.signature);
+                    break;
+                case "rscc":
+                    this.tryAppendQueryParameter(queries, param, this.cacheControl);
+                    break;
+                case "rscd":
+                    this.tryAppendQueryParameter(queries, param, this.contentDisposition);
+                    break;
+                case "rsce":
+                    this.tryAppendQueryParameter(queries, param, this.contentEncoding);
+                    break;
+                case "rscl":
+                    this.tryAppendQueryParameter(queries, param, this.contentLanguage);
+                    break;
+                case "rsct":
+                    this.tryAppendQueryParameter(queries, param, this.contentType);
+                    break;
+                case "saoid":
+                    this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);
+                    break;
+                case "scid":
+                    this.tryAppendQueryParameter(queries, param, this.correlationId);
+                    break;
+            }
+        }
+        return queries.join("&");
+    }
+    /**
+     * A private helper method used to filter and append query key/value pairs into an array.
+     *
+     * @param queries -
+     * @param key -
+     * @param value -
+     */
+    tryAppendQueryParameter(queries, key, value) {
+        if (!value) {
+            return;
+        }
+        key = encodeURIComponent(key);
+        value = encodeURIComponent(value);
+        if (key.length > 0 && value.length > 0) {
+            queries.push(`${key}=${value}`);
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
+        ? sharedKeyCredentialOrUserDelegationKey
+        : undefined;
+    let userDelegationKeyCredential;
+    if (sharedKeyCredential === undefined && accountName !== undefined) {
+        userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
+    }
+    if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {
+        throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.");
+    }
+    // Version 2019-12-12 adds support for the blob tags permission.
+    // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
+    // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
+    if (version >= "2018-11-09") {
+        if (sharedKeyCredential !== undefined) {
+            return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);
+        }
+        else {
+            // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.
+            if (version >= "2020-02-10") {
+                return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);
+            }
+            else {
+                return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);
+            }
+        }
+    }
+    if (version >= "2015-04-05") {
+        if (sharedKeyCredential !== undefined) {
+            return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);
+        }
+        else {
+            throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.");
+        }
+    }
+    throw new RangeError("'version' must be >= '2015-04-05'.");
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn and identifier.
+ *
+ * WARNING: When identifier is not provided, permissions and expiresOn are required.
+ * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
+ * this constructor.
+ *
+ * @param blobSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    if (!blobSASSignatureValues.identifier &&
+        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
+    }
+    let resource = "c";
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        blobSASSignatureValues.identifier,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
+        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
+        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
+        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
+        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn and identifier.
+ *
+ * WARNING: When identifier is not provided, permissions and expiresOn are required.
+ * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
+ * this constructor.
+ *
+ * @param blobSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    if (!blobSASSignatureValues.identifier &&
+        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        blobSASSignatureValues.identifier,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
+        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
+        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
+        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
+        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn.
+ *
+ * WARNING: identifier will be ignored, permissions and expiresOn are required.
+ *
+ * @param blobSASSignatureValues -
+ * @param userDelegationKeyCredential -
+ */
+function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    // Stored access policies are not supported for a user delegation SAS.
+    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        userDelegationKeyCredential.userDelegationKey.signedObjectId,
+        userDelegationKeyCredential.userDelegationKey.signedTenantId,
+        userDelegationKeyCredential.userDelegationKey.signedStartsOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedService,
+        userDelegationKeyCredential.userDelegationKey.signedVersion,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl,
+        blobSASSignatureValues.contentDisposition,
+        blobSASSignatureValues.contentEncoding,
+        blobSASSignatureValues.contentLanguage,
+        blobSASSignatureValues.contentType
+    ].join("\n");
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn.
+ *
+ * WARNING: identifier will be ignored, permissions and expiresOn are required.
+ *
+ * @param blobSASSignatureValues -
+ * @param userDelegationKeyCredential -
+ */
+function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    // Stored access policies are not supported for a user delegation SAS.
+    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        userDelegationKeyCredential.userDelegationKey.signedObjectId,
+        userDelegationKeyCredential.userDelegationKey.signedTenantId,
+        userDelegationKeyCredential.userDelegationKey.signedStartsOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedService,
+        userDelegationKeyCredential.userDelegationKey.signedVersion,
+        blobSASSignatureValues.preauthorizedAgentObjectId,
+        undefined,
+        blobSASSignatureValues.correlationId,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl,
+        blobSASSignatureValues.contentDisposition,
+        blobSASSignatureValues.contentEncoding,
+        blobSASSignatureValues.contentLanguage,
+        blobSASSignatureValues.contentType
+    ].join("\n");
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);
+}
+function getCanonicalName(accountName, containerName, blobName) {
+    // Container: "/blob/account/containerName"
+    // Blob:      "/blob/account/containerName/blobName"
+    const elements = [`/blob/${accountName}/${containerName}`];
+    if (blobName) {
+        elements.push(`/${blobName}`);
+    }
+    return elements.join("");
+}
+function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
+        throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
+    }
+    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
+        throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.");
+    }
+    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.");
+    }
+    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
+        throw RangeError("Must provide 'blobName' when providing 'versionId'.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.setImmutabilityPolicy &&
+        version < "2020-08-04") {
+        throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.deleteVersion &&
+        version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.tag &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.");
+    }
+    if (version < "2020-02-10" &&
+        blobSASSignatureValues.permissions &&
+        (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {
+        throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.");
+    }
+    if (version < "2020-02-10" &&
+        (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {
+        throw RangeError("'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.");
+    }
+    blobSASSignatureValues.version = version;
+    return blobSASSignatureValues;
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
+ */
+class BlobLeaseClient {
+    /**
+     * Creates an instance of BlobLeaseClient.
+     * @param client - The client to make the lease operation requests.
+     * @param leaseId - Initial proposed lease id.
+     */
+    constructor(client, leaseId) {
+        const clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
+        this._url = client.url;
+        if (client.name === undefined) {
+            this._isContainer = true;
+            this._containerOrBlobOperation = new Container(clientContext);
+        }
+        else {
+            this._isContainer = false;
+            this._containerOrBlobOperation = new Blob$1(clientContext);
+        }
+        if (!leaseId) {
+            leaseId = coreHttp.generateUuid();
+        }
+        this._leaseId = leaseId;
+    }
+    /**
+     * Gets the lease Id.
+     *
+     * @readonly
+     */
+    get leaseId() {
+        return this._leaseId;
+    }
+    /**
+     * Gets the url.
+     *
+     * @readonly
+     */
+    get url() {
+        return this._url;
+    }
+    /**
+     * Establishes and manages a lock on a container for delete operations, or on a blob
+     * for write and delete operations.
+     * The lock duration can be 15 to 60 seconds, or can be infinite.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param duration - Must be between 15 to 60 seconds, or infinite (-1)
+     * @param options - option to configure lease management operations.
+     * @returns Response data for acquire lease operation.
+     */
+    async acquireLease(duration, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-acquireLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.acquireLease(Object.assign({ abortSignal: options.abortSignal, duration, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To change the ID of the lease.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param proposedLeaseId - the proposed new lease Id.
+     * @param options - option to configure lease management operations.
+     * @returns Response data for change lease operation.
+     */
+    async changeLease(proposedLeaseId, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-changeLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const response = await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            this._leaseId = proposedLeaseId;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To free the lease if it is no longer needed so that another client may
+     * immediately acquire a lease against the container or the blob.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param options - option to configure lease management operations.
+     * @returns Response data for release lease operation.
+     */
+    async releaseLease(options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-releaseLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.releaseLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To renew the lease.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param options - Optional option to configure lease management operations.
+     * @returns Response data for renew lease operation.
+     */
+    async renewLease(options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-renewLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.renewLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To end the lease but ensure that another client cannot acquire a new lease
+     * until the current lease period has expired.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param breakPeriod - Break period
+     * @param options - Optional options to configure lease management operations.
+     * @returns Response data for break lease operation.
+     */
+    async breakLease(breakPeriod, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-breakLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const operationOptions = Object.assign({ abortSignal: options.abortSignal, breakPeriod, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
+            return await this._containerOrBlobOperation.breakLease(operationOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
+ */
+class RetriableReadableStream extends stream.Readable {
+    /**
+     * Creates an instance of RetriableReadableStream.
+     *
+     * @param source - The current ReadableStream returned from getter
+     * @param getter - A method calling downloading request returning
+     *                                      a new ReadableStream from specified offset
+     * @param offset - Offset position in original data source to read
+     * @param count - How much data in original data source to read
+     * @param options -
+     */
+    constructor(source, getter, offset, count, options = {}) {
+        super({ highWaterMark: options.highWaterMark });
+        this.retries = 0;
+        this.sourceDataHandler = (data) => {
+            if (this.options.doInjectErrorOnce) {
+                this.options.doInjectErrorOnce = undefined;
+                this.source.pause();
+                this.source.removeAllListeners("data");
+                this.source.emit("end");
+                return;
+            }
+            // console.log(
+            //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
+            // );
+            this.offset += data.length;
+            if (this.onProgress) {
+                this.onProgress({ loadedBytes: this.offset - this.start });
+            }
+            if (!this.push(data)) {
+                this.source.pause();
+            }
+        };
+        this.sourceErrorOrEndHandler = (err) => {
+            if (err && err.name === "AbortError") {
+                this.destroy(err);
+                return;
+            }
+            // console.log(
+            //   `Source stream emits end or error, offset: ${
+            //     this.offset
+            //   }, dest end : ${this.end}`
+            // );
+            this.removeSourceEventHandlers();
+            if (this.offset - 1 === this.end) {
+                this.push(null);
+            }
+            else if (this.offset <= this.end) {
+                // console.log(
+                //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
+                // );
+                if (this.retries < this.maxRetryRequests) {
+                    this.retries += 1;
+                    this.getter(this.offset)
+                        .then((newSource) => {
+                        this.source = newSource;
+                        this.setSourceEventHandlers();
+                        return;
+                    })
+                        .catch((error) => {
+                        this.destroy(error);
+                    });
+                }
+                else {
+                    this.destroy(new Error(`Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this
+                        .offset - 1}, data needed offset: ${this.end}, retries: ${this.retries}, max retries: ${this.maxRetryRequests}`));
+                }
+            }
+            else {
+                this.destroy(new Error(`Data corruption failure: Received more data than original request, data needed offset is ${this.end}, received offset: ${this.offset - 1}`));
+            }
+        };
+        this.getter = getter;
+        this.source = source;
+        this.start = offset;
+        this.offset = offset;
+        this.end = offset + count - 1;
+        this.maxRetryRequests =
+            options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
+        this.onProgress = options.onProgress;
+        this.options = options;
+        this.setSourceEventHandlers();
+    }
+    _read() {
+        this.source.resume();
+    }
+    setSourceEventHandlers() {
+        this.source.on("data", this.sourceDataHandler);
+        this.source.on("end", this.sourceErrorOrEndHandler);
+        this.source.on("error", this.sourceErrorOrEndHandler);
+    }
+    removeSourceEventHandlers() {
+        this.source.removeListener("data", this.sourceDataHandler);
+        this.source.removeListener("end", this.sourceErrorOrEndHandler);
+        this.source.removeListener("error", this.sourceErrorOrEndHandler);
+    }
+    _destroy(error, callback) {
+        // remove listener from source and release source
+        this.removeSourceEventHandlers();
+        this.source.destroy();
+        callback(error === null ? undefined : error);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * BlobDownloadResponse implements BlobDownloadResponseParsed interface, and in Node.js runtime it will
+ * automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot
+ * trigger retries defined in pipeline retry policy.)
+ *
+ * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
+ * Readable stream.
+ */
+class BlobDownloadResponse {
+    /**
+     * Creates an instance of BlobDownloadResponse.
+     *
+     * @param originalResponse -
+     * @param getter -
+     * @param offset -
+     * @param count -
+     * @param options -
+     */
+    constructor(originalResponse, getter, offset, count, options = {}) {
+        this.originalResponse = originalResponse;
+        this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
+    }
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return this.originalResponse.copyCompletedOn;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The number of tags associated with the blob
+     *
+     * @readonly
+     */
+    get tagCount() {
+        return this.originalResponse.tagCount;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * Returns the UTC date and time generated by the service that indicates the time at which the blob was
+     * last read or written to.
+     *
+     * @readonly
+     */
+    get lastAccessed() {
+        return this.originalResponse.lastAccessed;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the Blob service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * Indicates the versionId of the downloaded blob version.
+     *
+     * @readonly
+     */
+    get versionId() {
+        return this.originalResponse.versionId;
+    }
+    /**
+     * Indicates whether version of this blob is a current version.
+     *
+     * @readonly
+     */
+    get isCurrentVersion() {
+        return this.originalResponse.isCurrentVersion;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * Object Replication Policy Id of the destination blob.
+     *
+     * @readonly
+     */
+    get objectReplicationDestinationPolicyId() {
+        return this.originalResponse.objectReplicationDestinationPolicyId;
+    }
+    /**
+     * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
+     *
+     * @readonly
+     */
+    get objectReplicationSourceProperties() {
+        return this.originalResponse.objectReplicationSourceProperties;
+    }
+    /**
+     * If this blob has been sealed.
+     *
+     * @readonly
+     */
+    get isSealed() {
+        return this.originalResponse.isSealed;
+    }
+    /**
+     * UTC date/time value generated by the service that indicates the time at which the blob immutability policy will expire.
+     *
+     * @readonly
+     */
+    get immutabilityPolicyExpiresOn() {
+        return this.originalResponse.immutabilityPolicyExpiresOn;
+    }
+    /**
+     * Indicates immutability policy mode.
+     *
+     * @readonly
+     */
+    get immutabilityPolicyMode() {
+        return this.originalResponse.immutabilityPolicyMode;
+    }
+    /**
+     * Indicates if a legal hold is present on the blob.
+     *
+     * @readonly
+     */
+    get legalHold() {
+        return this.originalResponse.legalHold;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get contentAsBlob() {
+        return this.originalResponse.blobBody;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will automatically retry when internal read stream unexpected ends.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const AVRO_SYNC_MARKER_SIZE = 16;
+const AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
+const AVRO_CODEC_KEY = "avro.codec";
+const AVRO_SCHEMA_KEY = "avro.schema";
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function arraysEqual(a, b) {
+    if (a === b)
+        return true;
+    if (a == null || b == null)
+        return false;
+    if (a.length != b.length)
+        return false;
+    for (let i = 0; i < a.length; ++i) {
+        if (a[i] !== b[i])
+            return false;
+    }
+    return true;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+class AvroParser {
+    /**
+     * Reads a fixed number of bytes from the stream.
+     *
+     * @param stream -
+     * @param length -
+     * @param options -
+     */
+    static async readFixedBytes(stream, length, options = {}) {
+        const bytes = await stream.read(length, { abortSignal: options.abortSignal });
+        if (bytes.length != length) {
+            throw new Error("Hit stream end.");
+        }
+        return bytes;
+    }
+    /**
+     * Reads a single byte from the stream.
+     *
+     * @param stream -
+     * @param options -
+     */
+    static async readByte(stream, options = {}) {
+        const buf = await AvroParser.readFixedBytes(stream, 1, options);
+        return buf[0];
+    }
+    // int and long are stored in variable-length zig-zag coding.
+    // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
+    // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
+    static async readZigZagLong(stream, options = {}) {
+        let zigZagEncoded = 0;
+        let significanceInBit = 0;
+        let byte, haveMoreByte, significanceInFloat;
+        do {
+            byte = await AvroParser.readByte(stream, options);
+            haveMoreByte = byte & 0x80;
+            zigZagEncoded |= (byte & 0x7f) << significanceInBit;
+            significanceInBit += 7;
+        } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
+        if (haveMoreByte) {
+            // Switch to float arithmetic
+            zigZagEncoded = zigZagEncoded;
+            significanceInFloat = 268435456; // 2 ** 28.
+            do {
+                byte = await AvroParser.readByte(stream, options);
+                zigZagEncoded += (byte & 0x7f) * significanceInFloat;
+                significanceInFloat *= 128; // 2 ** 7
+            } while (byte & 0x80);
+            const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
+            if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
+                throw new Error("Integer overflow.");
+            }
+            return res;
+        }
+        return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
+    }
+    static async readLong(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readInt(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readNull() {
+        return null;
+    }
+    static async readBoolean(stream, options = {}) {
+        const b = await AvroParser.readByte(stream, options);
+        if (b == 1) {
+            return true;
+        }
+        else if (b == 0) {
+            return false;
+        }
+        else {
+            throw new Error("Byte was not a boolean.");
+        }
+    }
+    static async readFloat(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat32(0, true); // littleEndian = true
+    }
+    static async readDouble(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat64(0, true); // littleEndian = true
+    }
+    static async readBytes(stream, options = {}) {
+        const size = await AvroParser.readLong(stream, options);
+        if (size < 0) {
+            throw new Error("Bytes size was negative.");
+        }
+        return await stream.read(size, { abortSignal: options.abortSignal });
+    }
+    static async readString(stream, options = {}) {
+        const u8arr = await AvroParser.readBytes(stream, options);
+        // polyfill TextDecoder to be backward compatible with older
+        // nodejs that doesn't expose TextDecoder as a global variable
+        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
+            global.TextDecoder = __webpack_require__(669).TextDecoder;
+        }
+        // FUTURE: need TextDecoder polyfill for IE
+        const utf8decoder = new TextDecoder();
+        return utf8decoder.decode(u8arr);
+    }
+    static async readMapPair(stream, readItemMethod, options = {}) {
+        const key = await AvroParser.readString(stream, options);
+        // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
+        const value = await readItemMethod(stream, options);
+        return { key, value };
+    }
+    static async readMap(stream, readItemMethod, options = {}) {
+        const readPairMethod = async (stream, options = {}) => {
+            return await AvroParser.readMapPair(stream, readItemMethod, options);
+        };
+        const pairs = await AvroParser.readArray(stream, readPairMethod, options);
+        const dict = {};
+        for (const pair of pairs) {
+            dict[pair.key] = pair.value;
+        }
+        return dict;
+    }
+    static async readArray(stream, readItemMethod, options = {}) {
+        const items = [];
+        for (let count = await AvroParser.readLong(stream, options); count != 0; count = await AvroParser.readLong(stream, options)) {
+            if (count < 0) {
+                // Ignore block sizes
+                await AvroParser.readLong(stream, options);
+                count = -count;
+            }
+            while (count--) {
+                const item = await readItemMethod(stream, options);
+                items.push(item);
+            }
+        }
+        return items;
+    }
+}
+var AvroComplex;
+(function (AvroComplex) {
+    AvroComplex["RECORD"] = "record";
+    AvroComplex["ENUM"] = "enum";
+    AvroComplex["ARRAY"] = "array";
+    AvroComplex["MAP"] = "map";
+    AvroComplex["UNION"] = "union";
+    AvroComplex["FIXED"] = "fixed";
+})(AvroComplex || (AvroComplex = {}));
+class AvroType {
+    /**
+     * Determines the AvroType from the Avro Schema.
+     */
+    static fromSchema(schema) {
+        if (typeof schema === "string") {
+            return AvroType.fromStringSchema(schema);
+        }
+        else if (Array.isArray(schema)) {
+            return AvroType.fromArraySchema(schema);
+        }
+        else {
+            return AvroType.fromObjectSchema(schema);
+        }
+    }
+    static fromStringSchema(schema) {
+        switch (schema) {
+            case AvroPrimitive.NULL:
+            case AvroPrimitive.BOOLEAN:
+            case AvroPrimitive.INT:
+            case AvroPrimitive.LONG:
+            case AvroPrimitive.FLOAT:
+            case AvroPrimitive.DOUBLE:
+            case AvroPrimitive.BYTES:
+            case AvroPrimitive.STRING:
+                return new AvroPrimitiveType(schema);
+            default:
+                throw new Error(`Unexpected Avro type ${schema}`);
+        }
+    }
+    static fromArraySchema(schema) {
+        return new AvroUnionType(schema.map(AvroType.fromSchema));
+    }
+    static fromObjectSchema(schema) {
+        const type = schema.type;
+        // Primitives can be defined as strings or objects
+        try {
+            return AvroType.fromStringSchema(type);
+        }
+        catch (err) { }
+        switch (type) {
+            case AvroComplex.RECORD:
+                if (schema.aliases) {
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
+                }
+                if (!schema.name) {
+                    throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
+                }
+                const fields = {};
+                if (!schema.fields) {
+                    throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
+                }
+                for (const field of schema.fields) {
+                    fields[field.name] = AvroType.fromSchema(field.type);
+                }
+                return new AvroRecordType(fields, schema.name);
+            case AvroComplex.ENUM:
+                if (schema.aliases) {
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
+                }
+                if (!schema.symbols) {
+                    throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
+                }
+                return new AvroEnumType(schema.symbols);
+            case AvroComplex.MAP:
+                if (!schema.values) {
+                    throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
+                }
+                return new AvroMapType(AvroType.fromSchema(schema.values));
+            case AvroComplex.ARRAY: // Unused today
+            case AvroComplex.FIXED: // Unused today
+            default:
+                throw new Error(`Unexpected Avro type ${type} in ${schema}`);
+        }
+    }
+}
+var AvroPrimitive;
+(function (AvroPrimitive) {
+    AvroPrimitive["NULL"] = "null";
+    AvroPrimitive["BOOLEAN"] = "boolean";
+    AvroPrimitive["INT"] = "int";
+    AvroPrimitive["LONG"] = "long";
+    AvroPrimitive["FLOAT"] = "float";
+    AvroPrimitive["DOUBLE"] = "double";
+    AvroPrimitive["BYTES"] = "bytes";
+    AvroPrimitive["STRING"] = "string";
+})(AvroPrimitive || (AvroPrimitive = {}));
+class AvroPrimitiveType extends AvroType {
+    constructor(primitive) {
+        super();
+        this._primitive = primitive;
+    }
+    async read(stream, options = {}) {
+        switch (this._primitive) {
+            case AvroPrimitive.NULL:
+                return await AvroParser.readNull();
+            case AvroPrimitive.BOOLEAN:
+                return await AvroParser.readBoolean(stream, options);
+            case AvroPrimitive.INT:
+                return await AvroParser.readInt(stream, options);
+            case AvroPrimitive.LONG:
+                return await AvroParser.readLong(stream, options);
+            case AvroPrimitive.FLOAT:
+                return await AvroParser.readFloat(stream, options);
+            case AvroPrimitive.DOUBLE:
+                return await AvroParser.readDouble(stream, options);
+            case AvroPrimitive.BYTES:
+                return await AvroParser.readBytes(stream, options);
+            case AvroPrimitive.STRING:
+                return await AvroParser.readString(stream, options);
+            default:
+                throw new Error("Unknown Avro Primitive");
+        }
+    }
+}
+class AvroEnumType extends AvroType {
+    constructor(symbols) {
+        super();
+        this._symbols = symbols;
+    }
+    async read(stream, options = {}) {
+        const value = await AvroParser.readInt(stream, options);
+        return this._symbols[value];
+    }
+}
+class AvroUnionType extends AvroType {
+    constructor(types) {
+        super();
+        this._types = types;
+    }
+    async read(stream, options = {}) {
+        const typeIndex = await AvroParser.readInt(stream, options);
+        return await this._types[typeIndex].read(stream, options);
+    }
+}
+class AvroMapType extends AvroType {
+    constructor(itemType) {
+        super();
+        this._itemType = itemType;
+    }
+    async read(stream, options = {}) {
+        const readItemMethod = async (s, options) => {
+            return await this._itemType.read(s, options);
+        };
+        return await AvroParser.readMap(stream, readItemMethod, options);
+    }
+}
+class AvroRecordType extends AvroType {
+    constructor(fields, name) {
+        super();
+        this._fields = fields;
+        this._name = name;
+    }
+    async read(stream, options = {}) {
+        const record = {};
+        record["$schema"] = this._name;
+        for (const key in this._fields) {
+            if (this._fields.hasOwnProperty(key)) {
+                record[key] = await this._fields[key].read(stream, options);
+            }
+        }
+        return record;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+class AvroReader {
+    constructor(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
+        this._dataStream = dataStream;
+        this._headerStream = headerStream || dataStream;
+        this._initialized = false;
+        this._blockOffset = currentBlockOffset || 0;
+        this._objectIndex = indexWithinCurrentBlock || 0;
+        this._initialBlockOffset = currentBlockOffset || 0;
+    }
+    get blockOffset() {
+        return this._blockOffset;
+    }
+    get objectIndex() {
+        return this._objectIndex;
+    }
+    async initialize(options = {}) {
+        const header = await AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
+            abortSignal: options.abortSignal
+        });
+        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
+            throw new Error("Stream is not an Avro file.");
+        }
+        // File metadata is written as if defined by the following map schema:
+        // { "type": "map", "values": "bytes"}
+        this._metadata = await AvroParser.readMap(this._headerStream, AvroParser.readString, {
+            abortSignal: options.abortSignal
+        });
+        // Validate codec
+        const codec = this._metadata[AVRO_CODEC_KEY];
+        if (!(codec == undefined || codec == "null")) {
+            throw new Error("Codecs are not supported");
+        }
+        // The 16-byte, randomly-generated sync marker for this file.
+        this._syncMarker = await AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
+            abortSignal: options.abortSignal
+        });
+        // Parse the schema
+        const schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
+        this._itemType = AvroType.fromSchema(schema);
+        if (this._blockOffset == 0) {
+            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+        }
+        this._itemsRemainingInBlock = await AvroParser.readLong(this._dataStream, {
+            abortSignal: options.abortSignal
+        });
+        // skip block length
+        await AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal });
+        this._initialized = true;
+        if (this._objectIndex && this._objectIndex > 0) {
+            for (let i = 0; i < this._objectIndex; i++) {
+                await this._itemType.read(this._dataStream, { abortSignal: options.abortSignal });
+                this._itemsRemainingInBlock--;
+            }
+        }
+    }
+    hasNext() {
+        return !this._initialized || this._itemsRemainingInBlock > 0;
+    }
+    parseObjects(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* parseObjects_1() {
+            if (!this._initialized) {
+                yield tslib.__await(this.initialize(options));
+            }
+            while (this.hasNext()) {
+                const result = yield tslib.__await(this._itemType.read(this._dataStream, {
+                    abortSignal: options.abortSignal
+                }));
+                this._itemsRemainingInBlock--;
+                this._objectIndex++;
+                if (this._itemsRemainingInBlock == 0) {
+                    const marker = yield tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
+                        abortSignal: options.abortSignal
+                    }));
+                    this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+                    this._objectIndex = 0;
+                    if (!arraysEqual(this._syncMarker, marker)) {
+                        throw new Error("Stream is not a valid Avro file.");
+                    }
+                    try {
+                        this._itemsRemainingInBlock = yield tslib.__await(AvroParser.readLong(this._dataStream, {
+                            abortSignal: options.abortSignal
+                        }));
+                    }
+                    catch (err) {
+                        // We hit the end of the stream.
+                        this._itemsRemainingInBlock = 0;
+                    }
+                    if (this._itemsRemainingInBlock > 0) {
+                        // Ignore block size
+                        yield tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }));
+                    }
+                }
+                yield yield tslib.__await(result);
+            }
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+class AvroReadable {
+}
+
+// Copyright (c) Microsoft Corporation.
+const ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
+class AvroReadableFromStream extends AvroReadable {
+    constructor(readable) {
+        super();
+        this._readable = readable;
+        this._position = 0;
+    }
+    toUint8Array(data) {
+        if (typeof data === "string") {
+            return Buffer.from(data);
+        }
+        return data;
+    }
+    get position() {
+        return this._position;
+    }
+    async read(size, options = {}) {
+        var _a;
+        if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+            throw ABORT_ERROR;
+        }
+        if (size < 0) {
+            throw new Error(`size parameter should be positive: ${size}`);
+        }
+        if (size === 0) {
+            return new Uint8Array();
+        }
+        if (!this._readable.readable) {
+            throw new Error("Stream no longer readable.");
+        }
+        // See if there is already enough data.
+        const chunk = this._readable.read(size);
+        if (chunk) {
+            this._position += chunk.length;
+            // chunk.length maybe less than desired size if the stream ends.
+            return this.toUint8Array(chunk);
+        }
+        else {
+            // register callback to wait for enough data to read
+            return new Promise((resolve, reject) => {
+                const cleanUp = () => {
+                    this._readable.removeListener("readable", readableCallback);
+                    this._readable.removeListener("error", rejectCallback);
+                    this._readable.removeListener("end", rejectCallback);
+                    this._readable.removeListener("close", rejectCallback);
+                    if (options.abortSignal) {
+                        options.abortSignal.removeEventListener("abort", abortHandler);
+                    }
+                };
+                const readableCallback = () => {
+                    const chunk = this._readable.read(size);
+                    if (chunk) {
+                        this._position += chunk.length;
+                        cleanUp();
+                        // chunk.length maybe less than desired size if the stream ends.
+                        resolve(this.toUint8Array(chunk));
+                    }
+                };
+                const rejectCallback = () => {
+                    cleanUp();
+                    reject();
+                };
+                const abortHandler = () => {
+                    cleanUp();
+                    reject(ABORT_ERROR);
+                };
+                this._readable.on("readable", readableCallback);
+                this._readable.once("error", rejectCallback);
+                this._readable.once("end", rejectCallback);
+                this._readable.once("close", rejectCallback);
+                if (options.abortSignal) {
+                    options.abortSignal.addEventListener("abort", abortHandler);
+                }
+            });
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
+ */
+class BlobQuickQueryStream extends stream.Readable {
+    /**
+     * Creates an instance of BlobQuickQueryStream.
+     *
+     * @param source - The current ReadableStream returned from getter
+     * @param options -
+     */
+    constructor(source, options = {}) {
+        super();
+        this.avroPaused = true;
+        this.source = source;
+        this.onProgress = options.onProgress;
+        this.onError = options.onError;
+        this.avroReader = new AvroReader(new AvroReadableFromStream(this.source));
+        this.avroIter = this.avroReader.parseObjects({ abortSignal: options.abortSignal });
+    }
+    _read() {
+        if (this.avroPaused) {
+            this.readInternal().catch((err) => {
+                this.emit("error", err);
+            });
+        }
+    }
+    async readInternal() {
+        this.avroPaused = false;
+        let avroNext;
+        do {
+            avroNext = await this.avroIter.next();
+            if (avroNext.done) {
+                break;
+            }
+            const obj = avroNext.value;
+            const schema = obj.$schema;
+            if (typeof schema !== "string") {
+                throw Error("Missing schema in avro record.");
+            }
+            switch (schema) {
+                case "com.microsoft.azure.storage.queryBlobContents.resultData":
+                    {
+                        const data = obj.data;
+                        if (data instanceof Uint8Array === false) {
+                            throw Error("Invalid data in avro result record.");
+                        }
+                        if (!this.push(Buffer.from(data))) {
+                            this.avroPaused = true;
+                        }
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.progress":
+                    {
+                        const bytesScanned = obj.bytesScanned;
+                        if (typeof bytesScanned !== "number") {
+                            throw Error("Invalid bytesScanned in avro progress record.");
+                        }
+                        if (this.onProgress) {
+                            this.onProgress({ loadedBytes: bytesScanned });
+                        }
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.end":
+                    if (this.onProgress) {
+                        const totalBytes = obj.totalBytes;
+                        if (typeof totalBytes !== "number") {
+                            throw Error("Invalid totalBytes in avro end record.");
+                        }
+                        this.onProgress({ loadedBytes: totalBytes });
+                    }
+                    this.push(null);
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.error":
+                    if (this.onError) {
+                        const fatal = obj.fatal;
+                        if (typeof fatal !== "boolean") {
+                            throw Error("Invalid fatal in avro error record.");
+                        }
+                        const name = obj.name;
+                        if (typeof name !== "string") {
+                            throw Error("Invalid name in avro error record.");
+                        }
+                        const description = obj.description;
+                        if (typeof description !== "string") {
+                            throw Error("Invalid description in avro error record.");
+                        }
+                        const position = obj.position;
+                        if (typeof position !== "number") {
+                            throw Error("Invalid position in avro error record.");
+                        }
+                        this.onError({
+                            position,
+                            name,
+                            isFatal: fatal,
+                            description
+                        });
+                    }
+                    break;
+                default:
+                    throw Error(`Unknown schema ${schema} in avro progress record.`);
+            }
+        } while (!avroNext.done && !this.avroPaused);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
+ * parse avor data returned by blob query.
+ */
+class BlobQueryResponse {
+    /**
+     * Creates an instance of BlobQueryResponse.
+     *
+     * @param originalResponse -
+     * @param options -
+     */
+    constructor(originalResponse, options = {}) {
+        this.originalResponse = originalResponse;
+        this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
+    }
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return undefined;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the File service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get blobBody() {
+        return undefined;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will parse avor data returned by blob query.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
 (function (BlockBlobTier) {
     /**
      * Optimized for storing data that is accessed frequently.
@@ -24892,7 +27241,7 @@ var StorageClientContext = /** @class */ (function (_super) {
     PremiumPageBlobTier["P80"] = "P80";
 })(exports.PremiumPageBlobTier || (exports.PremiumPageBlobTier = {}));
 function toAccessTier(tier) {
-    if (tier == undefined) {
+    if (tier === undefined) {
         return undefined;
     }
     return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).
@@ -24906,167 +27255,137 @@ function ensureCpkIfSpecified(cpk, isHttps) {
     }
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Function that converts PageRange and ClearRange to a common Range object.
  * PageRange and ClearRange have start and end while Range offset and count
  * this function normalizes to Range.
- * @param response Model PageBlob Range response
+ * @param response - Model PageBlob Range response
  */
 function rangeResponseFromModel(response) {
-    var pageRange = (response._response.parsedBody.pageRange || []).map(function (x) { return ({
+    const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    var clearRange = (response._response.parsedBody.clearRange || []).map(function (x) { return ({
+    }));
+    const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    return tslib.__assign(tslib.__assign({}, response), { pageRange: pageRange,
-        clearRange: clearRange, _response: tslib.__assign(tslib.__assign({}, response._response), { parsedBody: {
-                pageRange: pageRange,
-                clearRange: clearRange
+    }));
+    return Object.assign(Object.assign({}, response), { pageRange,
+        clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {
+                pageRange,
+                clearRange
             } }) });
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This is the poller returned by {@link BlobClient.beginCopyFromURL}.
  * This can not be instantiated directly outside of this package.
  *
- * @ignore
+ * @hidden
  */
-var BlobBeginCopyFromUrlPoller = /** @class */ (function (_super) {
-    tslib.__extends(BlobBeginCopyFromUrlPoller, _super);
-    function BlobBeginCopyFromUrlPoller(options) {
-        var _this = this;
-        var blobClient = options.blobClient, copySource = options.copySource, _a = options.intervalInMs, intervalInMs = _a === void 0 ? 15000 : _a, onProgress = options.onProgress, resumeFrom = options.resumeFrom, startCopyFromURLOptions = options.startCopyFromURLOptions;
-        var state;
+class BlobBeginCopyFromUrlPoller extends coreLro.Poller {
+    constructor(options) {
+        const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions } = options;
+        let state;
         if (resumeFrom) {
             state = JSON.parse(resumeFrom).state;
         }
-        var operation = makeBlobBeginCopyFromURLPollOperation(tslib.__assign(tslib.__assign({}, state), { blobClient: blobClient,
-            copySource: copySource,
-            startCopyFromURLOptions: startCopyFromURLOptions }));
-        _this = _super.call(this, operation) || this;
+        const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,
+            copySource,
+            startCopyFromURLOptions }));
+        super(operation);
         if (typeof onProgress === "function") {
-            _this.onProgress(onProgress);
+            this.onProgress(onProgress);
         }
-        _this.intervalInMs = intervalInMs;
-        return _this;
+        this.intervalInMs = intervalInMs;
     }
-    BlobBeginCopyFromUrlPoller.prototype.delay = function () {
+    delay() {
         return coreHttp.delay(this.intervalInMs);
-    };
-    return BlobBeginCopyFromUrlPoller;
-}(coreLro.Poller));
+    }
+}
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var cancel = function cancel(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, copyId;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    copyId = state.copyId;
-                    if (state.isCompleted) {
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    if (!copyId) {
-                        state.isCancelled = true;
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    return [4 /*yield*/, state.blobClient.abortCopyFromURL(copyId, {
-                            abortSignal: options.abortSignal
-                        })];
-                case 1:
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    _a.sent();
-                    state.isCancelled = true;
-                    return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-            }
-        });
+const cancel = async function cancel(options = {}) {
+    const state = this.state;
+    const { copyId } = state;
+    if (state.isCompleted) {
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    if (!copyId) {
+        state.isCancelled = true;
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
+    await state.blobClient.abortCopyFromURL(copyId, {
+        abortSignal: options.abortSignal
     });
+    state.isCancelled = true;
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var update = function update(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, blobClient, copySource, startCopyFromURLOptions, result, result, copyStatus, copyProgress, prevCopyProgress, err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    blobClient = state.blobClient, copySource = state.copySource, startCopyFromURLOptions = state.startCopyFromURLOptions;
-                    if (!!state.isStarted) return [3 /*break*/, 2];
-                    state.isStarted = true;
-                    return [4 /*yield*/, blobClient.startCopyFromURL(copySource, startCopyFromURLOptions)];
-                case 1:
-                    result = _a.sent();
-                    // copyId is needed to abort
-                    state.copyId = result.copyId;
-                    if (result.copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 2:
-                    if (!!state.isCompleted) return [3 /*break*/, 6];
-                    _a.label = 3;
-                case 3:
-                    _a.trys.push([3, 5, , 6]);
-                    return [4 /*yield*/, state.blobClient.getProperties({ abortSignal: options.abortSignal })];
-                case 4:
-                    result = _a.sent();
-                    copyStatus = result.copyStatus, copyProgress = result.copyProgress;
-                    prevCopyProgress = state.copyProgress;
-                    if (copyProgress) {
-                        state.copyProgress = copyProgress;
-                    }
-                    if (copyStatus === "pending" &&
-                        copyProgress !== prevCopyProgress &&
-                        typeof options.fireProgress === "function") {
-                        // trigger in setTimeout, or swallow error?
-                        options.fireProgress(state);
-                    }
-                    else if (copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    else if (copyStatus === "failed") {
-                        state.error = new Error("Blob copy failed with reason: \"" + (result.copyStatusDescription || "unknown") + "\"");
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 5:
-                    err_1 = _a.sent();
-                    state.error = err_1;
-                    state.isCompleted = true;
-                    return [3 /*break*/, 6];
-                case 6: return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
+const update = async function update(options = {}) {
+    const state = this.state;
+    const { blobClient, copySource, startCopyFromURLOptions } = state;
+    if (!state.isStarted) {
+        state.isStarted = true;
+        const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);
+        // copyId is needed to abort
+        state.copyId = result.copyId;
+        if (result.copyStatus === "success") {
+            state.result = result;
+            state.isCompleted = true;
+        }
+    }
+    else if (!state.isCompleted) {
+        try {
+            const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });
+            const { copyStatus, copyProgress } = result;
+            const prevCopyProgress = state.copyProgress;
+            if (copyProgress) {
+                state.copyProgress = copyProgress;
             }
-        });
-    });
+            if (copyStatus === "pending" &&
+                copyProgress !== prevCopyProgress &&
+                typeof options.fireProgress === "function") {
+                // trigger in setTimeout, or swallow error?
+                options.fireProgress(state);
+            }
+            else if (copyStatus === "success") {
+                state.result = result;
+                state.isCompleted = true;
+            }
+            else if (copyStatus === "failed") {
+                state.error = new Error(`Blob copy failed with reason: "${result.copyStatusDescription || "unknown"}"`);
+                state.isCompleted = true;
+            }
+        }
+        catch (err) {
+            state.error = err;
+            state.isCompleted = true;
+        }
+    }
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var toString = function toString() {
-    return JSON.stringify({ state: this.state }, function (key, value) {
+const toString = function toString() {
+    return JSON.stringify({ state: this.state }, (key, value) => {
         // remove blobClient from serialized state since a client can't be hydrated from this info.
         if (key === "blobClient") {
             return undefined;
@@ -25076,83 +27395,41 @@ var toString = function toString() {
 };
 /**
  * Creates a poll operation given the provided state.
- * @ignore
+ * @hidden
  */
 function makeBlobBeginCopyFromURLPollOperation(state) {
     return {
-        state: tslib.__assign({}, state),
-        cancel: cancel,
-        toString: toString,
-        update: update
+        state: Object.assign({}, state),
+        cancel,
+        toString,
+        update
     };
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Generate a range string. For example:
  *
  * "bytes=255-" or "bytes=0-511"
  *
- * @export
- * @param {Range} iRange
- * @returns {string}
+ * @param iRange -
  */
 function rangeToString(iRange) {
     if (iRange.offset < 0) {
-        throw new RangeError("Range.offset cannot be smaller than 0.");
+        throw new RangeError(`Range.offset cannot be smaller than 0.`);
     }
     if (iRange.count && iRange.count <= 0) {
-        throw new RangeError("Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");
+        throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);
     }
     return iRange.count
-        ? "bytes=" + iRange.offset + "-" + (iRange.offset + iRange.count - 1)
-        : "bytes=" + iRange.offset + "-";
+        ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`
+        : `bytes=${iRange.offset}-`;
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
- * and etc.
- *
- * @export
- * @class StorageClient
- */
-var StorageClient = /** @class */ (function () {
-    /**
-     * Creates an instance of StorageClient.
-     * @param {string} url url to resource
-     * @param {Pipeline} pipeline request policy pipeline.
-     * @memberof StorageClient
-     */
-    function StorageClient(url, pipeline) {
-        // URL should be encoded and only once, protocol layer shouldn't encode URL again
-        this.url = escapeURLPath(url);
-        this.accountName = getAccountNameFromUrl(url);
-        this.pipeline = pipeline;
-        this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
-        this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
-        this.credential = new AnonymousCredential();
-        for (var _i = 0, _a = this.pipeline.factories; _i < _a.length; _i++) {
-            var factory = _a[_i];
-            if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
-                factory instanceof AnonymousCredential ||
-                coreHttp.isTokenCredential(factory)) {
-                this.credential = factory;
-            }
-        }
-        // Override protocol layer's default content-type
-        var storageClientContext = this.storageClientContext;
-        storageClientContext.requestContentType = undefined;
-    }
-    return StorageClient;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * States for Batch.
- *
- * @enum {number}
  */
 var BatchStates;
 (function (BatchStates) {
@@ -25163,57 +27440,32 @@ var BatchStates;
  * Batch provides basic parallel execution with concurrency limits.
  * Will stop execute left operations when one of the executed operation throws an error.
  * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.
- *
- * @export
- * @class Batch
  */
-var Batch = /** @class */ (function () {
+class Batch {
     /**
      * Creates an instance of Batch.
-     * @param {number} [concurrency=5]
-     * @memberof Batch
+     * @param concurrency -
      */
-    function Batch(concurrency) {
-        if (concurrency === void 0) { concurrency = 5; }
+    constructor(concurrency = 5) {
         /**
          * Number of active operations under execution.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.actives = 0;
         /**
          * Number of completed operations under execution.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.completed = 0;
         /**
          * Offset of next operation to be executed.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.offset = 0;
         /**
          * Operation array to be executed.
-         *
-         * @private
-         * @type {Operation[]}
-         * @memberof Batch
          */
         this.operations = [];
         /**
          * States of Batch. When an error happens, state will turn into error.
          * Batch will stop execute left operations.
-         *
-         * @private
-         * @type {BatchStates}
-         * @memberof Batch
          */
         this.state = BatchStates.Good;
         if (concurrency < 1) {
@@ -25225,80 +27477,55 @@ var Batch = /** @class */ (function () {
     /**
      * Add a operation into queue.
      *
-     * @param {Operation} operation
-     * @memberof Batch
+     * @param operation -
      */
-    Batch.prototype.addOperation = function (operation) {
-        var _this = this;
-        this.operations.push(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-            var error_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        _a.trys.push([0, 2, , 3]);
-                        this.actives++;
-                        return [4 /*yield*/, operation()];
-                    case 1:
-                        _a.sent();
-                        this.actives--;
-                        this.completed++;
-                        this.parallelExecute();
-                        return [3 /*break*/, 3];
-                    case 2:
-                        error_1 = _a.sent();
-                        this.emitter.emit("error", error_1);
-                        return [3 /*break*/, 3];
-                    case 3: return [2 /*return*/];
-                }
-            });
-        }); });
-    };
+    addOperation(operation) {
+        this.operations.push(async () => {
+            try {
+                this.actives++;
+                await operation();
+                this.actives--;
+                this.completed++;
+                this.parallelExecute();
+            }
+            catch (error) {
+                this.emitter.emit("error", error);
+            }
+        });
+    }
     /**
      * Start execute operations in the queue.
      *
-     * @returns {Promise<void>}
-     * @memberof Batch
      */
-    Batch.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                if (this.operations.length === 0) {
-                    return [2 /*return*/, Promise.resolve()];
-                }
-                this.parallelExecute();
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.emitter.on("finish", resolve);
-                        _this.emitter.on("error", function (error) {
-                            _this.state = BatchStates.Error;
-                            reject(error);
-                        });
-                    })];
+    async do() {
+        if (this.operations.length === 0) {
+            return Promise.resolve();
+        }
+        this.parallelExecute();
+        return new Promise((resolve, reject) => {
+            this.emitter.on("finish", resolve);
+            this.emitter.on("error", (error) => {
+                this.state = BatchStates.Error;
+                reject(error);
             });
         });
-    };
+    }
     /**
      * Get next operation to be executed. Return null when reaching ends.
      *
-     * @private
-     * @returns {(Operation | null)}
-     * @memberof Batch
      */
-    Batch.prototype.nextOperation = function () {
+    nextOperation() {
         if (this.offset < this.operations.length) {
             return this.operations[this.offset++];
         }
         return null;
-    };
+    }
     /**
      * Start execute operations. One one the most important difference between
      * this method with do() is that do() wraps as an sync method.
      *
-     * @private
-     * @returns {void}
-     * @memberof Batch
      */
-    Batch.prototype.parallelExecute = function () {
+    parallelExecute() {
         if (this.state === BatchStates.Error) {
             return;
         }
@@ -25307,7 +27534,7 @@ var Batch = /** @class */ (function () {
             return;
         }
         while (this.actives < this.concurrency) {
-            var operation = this.nextOperation();
+            const operation = this.nextOperation();
             if (operation) {
                 operation();
             }
@@ -25315,68 +27542,59 @@ var Batch = /** @class */ (function () {
                 return;
             }
         }
-    };
-    return Batch;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This class generates a readable stream from the data in an array of buffers.
- *
- * @export
- * @class BuffersStream
  */
-var BuffersStream = /** @class */ (function (_super) {
-    tslib.__extends(BuffersStream, _super);
+class BuffersStream extends stream.Readable {
     /**
      * Creates an instance of BuffersStream that will emit the data
      * contained in the array of buffers.
      *
-     * @param {Buffer[]} buffers Array of buffers containing the data
-     * @param {number} byteLength The total length of data contained in the buffers
-     * @memberof BuffersStream
+     * @param buffers - Array of buffers containing the data
+     * @param byteLength - The total length of data contained in the buffers
      */
-    function BuffersStream(buffers, byteLength, options) {
-        var _this = _super.call(this, options) || this;
-        _this.buffers = buffers;
-        _this.byteLength = byteLength;
-        _this.byteOffsetInCurrentBuffer = 0;
-        _this.bufferIndex = 0;
-        _this.pushedBytesLength = 0;
+    constructor(buffers, byteLength, options) {
+        super(options);
+        this.buffers = buffers;
+        this.byteLength = byteLength;
+        this.byteOffsetInCurrentBuffer = 0;
+        this.bufferIndex = 0;
+        this.pushedBytesLength = 0;
         // check byteLength is no larger than buffers[] total length
-        var buffersLength = 0;
-        for (var _i = 0, _a = _this.buffers; _i < _a.length; _i++) {
-            var buf = _a[_i];
+        let buffersLength = 0;
+        for (const buf of this.buffers) {
             buffersLength += buf.byteLength;
         }
-        if (buffersLength < _this.byteLength) {
+        if (buffersLength < this.byteLength) {
             throw new Error("Data size shouldn't be larger than the total length of buffers.");
         }
-        return _this;
     }
     /**
      * Internal _read() that will be called when the stream wants to pull more data in.
      *
-     * @param {number} size Optional. The size of data to be read
-     * @memberof BuffersStream
+     * @param size - Optional. The size of data to be read
      */
-    BuffersStream.prototype._read = function (size) {
+    _read(size) {
         if (this.pushedBytesLength >= this.byteLength) {
             this.push(null);
         }
         if (!size) {
             size = this.readableHighWaterMark;
         }
-        var outBuffers = [];
-        var i = 0;
+        const outBuffers = [];
+        let i = 0;
         while (i < size && this.pushedBytesLength < this.byteLength) {
             // The last buffer may be longer than the data it contains.
-            var remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
-            var remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
-            var remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
+            const remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
+            const remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
+            const remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
             if (remaining > size - i) {
                 // chunkSize = size - i
-                var end = this.byteOffsetInCurrentBuffer + size - i;
+                const end = this.byteOffsetInCurrentBuffer + size - i;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 this.pushedBytesLength += size - i;
                 this.byteOffsetInCurrentBuffer = end;
@@ -25385,7 +27603,7 @@ var BuffersStream = /** @class */ (function (_super) {
             }
             else {
                 // chunkSize = remaining
-                var end = this.byteOffsetInCurrentBuffer + remaining;
+                const end = this.byteOffsetInCurrentBuffer + remaining;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 if (remaining === remainingCapacityInThisBuffer) {
                     // this.buffers[this.bufferIndex] used up, shift to next one
@@ -25405,16 +27623,15 @@ var BuffersStream = /** @class */ (function (_super) {
         else if (outBuffers.length === 1) {
             this.push(outBuffers[0]);
         }
-    };
-    return BuffersStream;
-}(stream.Readable));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * maxBufferLength is max size of each buffer in the pooled buffers.
  */
 // Can't use import as Typescript doesn't recognize "buffer".
-var maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
+const maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
 /**
  * This class provides a buffer container which conceptually has no hard size limit.
  * It accepts a capacity, an array of input buffers and the total length of input data.
@@ -25422,27 +27639,20 @@ var maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
  * into the internal "buffer" serially with respect to the total length.
  * Then by calling PooledBuffer.getReadableStream(), you can get a readable stream
  * assembled from all the data in the internal "buffer".
- *
- * @export
- * @class BufferScheduler
  */
-var PooledBuffer = /** @class */ (function () {
-    function PooledBuffer(capacity, buffers, totalLength) {
+class PooledBuffer {
+    constructor(capacity, buffers, totalLength) {
         /**
          * Internal buffers used to keep the data.
          * Each buffer has a length of the maxBufferLength except last one.
-         *
-         * @private
-         * @type {Buffer[]}
-         * @memberof PooledBuffer
          */
         this.buffers = [];
         this.capacity = capacity;
         this._size = 0;
         // allocate
-        var bufferNum = Math.ceil(capacity / maxBufferLength);
-        for (var i = 0; i < bufferNum; i++) {
-            var len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
+        const bufferNum = Math.ceil(capacity / maxBufferLength);
+        for (let i = 0; i < bufferNum; i++) {
+            let len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
             if (len === 0) {
                 len = maxBufferLength;
             }
@@ -25452,34 +27662,28 @@ var PooledBuffer = /** @class */ (function () {
             this.fill(buffers, totalLength);
         }
     }
-    Object.defineProperty(PooledBuffer.prototype, "size", {
-        /**
-         * The size of the data contained in the pooled buffers.
-         */
-        get: function () {
-            return this._size;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The size of the data contained in the pooled buffers.
+     */
+    get size() {
+        return this._size;
+    }
     /**
      * Fill the internal buffers with data in the input buffers serially
      * with respect to the total length and the total capacity of the internal buffers.
      * Data copied will be shift out of the input buffers.
      *
-     * @param {Buffer[]} buffers Input buffers containing the data to be filled in the pooled buffer
-     * @param {number} totalLength Total length of the data to be filled in.
+     * @param buffers - Input buffers containing the data to be filled in the pooled buffer
+     * @param totalLength - Total length of the data to be filled in.
      *
-     * @returns {void}
-     * @memberof PooledBuffer
      */
-    PooledBuffer.prototype.fill = function (buffers, totalLength) {
+    fill(buffers, totalLength) {
         this._size = Math.min(this.capacity, totalLength);
-        var i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
+        let i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
         while (totalCopiedNum < this._size) {
-            var source = buffers[i];
-            var target = this.buffers[j];
-            var copiedNum = source.copy(target, targetOffset, sourceOffset);
+            const source = buffers[i];
+            const target = this.buffers[j];
+            const copiedNum = source.copy(target, targetOffset, sourceOffset);
             totalCopiedNum += copiedNum;
             sourceOffset += copiedNum;
             targetOffset += copiedNum;
@@ -25497,20 +27701,17 @@ var PooledBuffer = /** @class */ (function () {
         if (buffers.length > 0) {
             buffers[0] = buffers[0].slice(sourceOffset);
         }
-    };
+    }
     /**
      * Get the readable stream assembled from all the data in the internal buffers.
      *
-     * @returns {Readable}
-     * @memberof PooledBuffer
      */
-    PooledBuffer.prototype.getReadableStream = function () {
+    getReadableStream() {
         return new BuffersStream(this.buffers, this.size);
-    };
-    return PooledBuffer;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This class accepts a Node.js Readable stream as input, and keeps reading data
  * from the stream into the internal buffer structure, until it reaches maxBuffers.
@@ -25523,7 +27724,7 @@ var PooledBuffer = /** @class */ (function () {
  *
  * NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
  *
- * NUM_OF_ALL_BUFFERS <= maxBuffers
+ * NUM_OF_ALL_BUFFERS lesser than or equal to maxBuffers
  *
  * PERFORMANCE IMPROVEMENT TIPS:
  * 1. Input stream highWaterMark is better to set a same value with bufferSize
@@ -25532,70 +27733,43 @@ var PooledBuffer = /** @class */ (function () {
  *    reduce the possibility when a outgoing handler waits for the stream data.
  *    in this situation, outgoing handlers are blocked.
  *    Outgoing queue shouldn't be empty.
- * @export
- * @class BufferScheduler
  */
-var BufferScheduler = /** @class */ (function () {
+class BufferScheduler {
     /**
      * Creates an instance of BufferScheduler.
      *
-     * @param {Readable} readable A Node.js Readable stream
-     * @param {number} bufferSize Buffer size of every maintained buffer
-     * @param {number} maxBuffers How many buffers can be allocated
-     * @param {OutgoingHandler} outgoingHandler An async function scheduled to be
+     * @param readable - A Node.js Readable stream
+     * @param bufferSize - Buffer size of every maintained buffer
+     * @param maxBuffers - How many buffers can be allocated
+     * @param outgoingHandler - An async function scheduled to be
      *                                          triggered when a buffer fully filled
      *                                          with stream data
-     * @param {number} concurrency Concurrency of executing outgoingHandlers (>0)
-     * @param {string} [encoding] [Optional] Encoding of Readable stream when it's a string stream
-     * @memberof BufferScheduler
+     * @param concurrency - Concurrency of executing outgoingHandlers (>0)
+     * @param encoding - [Optional] Encoding of Readable stream when it's a string stream
      */
-    function BufferScheduler(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
+    constructor(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
         /**
          * An internal event emitter.
-         *
-         * @private
-         * @type {EventEmitter}
-         * @memberof BufferScheduler
          */
         this.emitter = new events.EventEmitter();
         /**
          * An internal offset marker to track data offset in bytes of next outgoingHandler.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.offset = 0;
         /**
          * An internal marker to track whether stream is end.
-         *
-         * @private
-         * @type {boolean}
-         * @memberof BufferScheduler
          */
         this.isStreamEnd = false;
         /**
          * An internal marker to track whether stream or outgoingHandler returns error.
-         *
-         * @private
-         * @type {boolean}
-         * @memberof BufferScheduler
          */
         this.isError = false;
         /**
          * How many handlers are executing.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.executingOutgoingHandlers = 0;
         /**
          * How many buffers have been allocated.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.numBuffers = 0;
         /**
@@ -25604,44 +27778,28 @@ var BufferScheduler = /** @class */ (function () {
          * data received from the stream, when data in unresolvedDataArray exceeds the
          * blockSize defined, it will try to concat a blockSize of buffer, fill into available
          * buffers from incoming and push to outgoing array.
-         *
-         * @private
-         * @type {Buffer[]}
-         * @memberof BufferScheduler
          */
         this.unresolvedDataArray = [];
         /**
          * How much data consisted in unresolvedDataArray.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.unresolvedLength = 0;
         /**
          * The array includes all the available buffers can be used to fill data from stream.
-         *
-         * @private
-         * @type {PooledBuffer[]}
-         * @memberof BufferScheduler
          */
         this.incoming = [];
         /**
          * The array (queue) includes all the buffers filled from stream data.
-         *
-         * @private
-         * @type {PooledBuffer[]}
-         * @memberof BufferScheduler
          */
         this.outgoing = [];
         if (bufferSize <= 0) {
-            throw new RangeError("bufferSize must be larger than 0, current is " + bufferSize);
+            throw new RangeError(`bufferSize must be larger than 0, current is ${bufferSize}`);
         }
         if (maxBuffers <= 0) {
-            throw new RangeError("maxBuffers must be larger than 0, current is " + maxBuffers);
+            throw new RangeError(`maxBuffers must be larger than 0, current is ${maxBuffers}`);
         }
         if (concurrency <= 0) {
-            throw new RangeError("concurrency must be larger than 0, current is " + concurrency);
+            throw new RangeError(`concurrency must be larger than 0, current is ${concurrency}`);
         }
         this.bufferSize = bufferSize;
         this.maxBuffers = maxBuffers;
@@ -25654,77 +27812,65 @@ var BufferScheduler = /** @class */ (function () {
      * Start the scheduler, will return error when stream of any of the outgoingHandlers
      * returns error.
      *
-     * @returns {Promise<void>}
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.readable.on("data", function (data) {
-                            data = typeof data === "string" ? Buffer.from(data, _this.encoding) : data;
-                            _this.appendUnresolvedData(data);
-                            if (!_this.resolveData()) {
-                                _this.readable.pause();
-                            }
-                        });
-                        _this.readable.on("error", function (err) {
-                            _this.emitter.emit("error", err);
-                        });
-                        _this.readable.on("end", function () {
-                            _this.isStreamEnd = true;
-                            _this.emitter.emit("checkEnd");
-                        });
-                        _this.emitter.on("error", function (err) {
-                            _this.isError = true;
-                            _this.readable.pause();
-                            reject(err);
-                        });
-                        _this.emitter.on("checkEnd", function () {
-                            if (_this.outgoing.length > 0) {
-                                _this.triggerOutgoingHandlers();
-                                return;
-                            }
-                            if (_this.isStreamEnd && _this.executingOutgoingHandlers === 0) {
-                                if (_this.unresolvedLength > 0 && _this.unresolvedLength < _this.bufferSize) {
-                                    var buffer_1 = _this.shiftBufferFromUnresolvedDataArray();
-                                    _this.outgoingHandler(function () { return buffer_1.getReadableStream(); }, buffer_1.size, _this.offset)
-                                        .then(resolve)
-                                        .catch(reject);
-                                }
-                                else if (_this.unresolvedLength >= _this.bufferSize) {
-                                    return;
-                                }
-                                else {
-                                    resolve();
-                                }
-                            }
-                        });
-                    })];
+    async do() {
+        return new Promise((resolve, reject) => {
+            this.readable.on("data", (data) => {
+                data = typeof data === "string" ? Buffer.from(data, this.encoding) : data;
+                this.appendUnresolvedData(data);
+                if (!this.resolveData()) {
+                    this.readable.pause();
+                }
+            });
+            this.readable.on("error", (err) => {
+                this.emitter.emit("error", err);
+            });
+            this.readable.on("end", () => {
+                this.isStreamEnd = true;
+                this.emitter.emit("checkEnd");
+            });
+            this.emitter.on("error", (err) => {
+                this.isError = true;
+                this.readable.pause();
+                reject(err);
+            });
+            this.emitter.on("checkEnd", () => {
+                if (this.outgoing.length > 0) {
+                    this.triggerOutgoingHandlers();
+                    return;
+                }
+                if (this.isStreamEnd && this.executingOutgoingHandlers === 0) {
+                    if (this.unresolvedLength > 0 && this.unresolvedLength < this.bufferSize) {
+                        const buffer = this.shiftBufferFromUnresolvedDataArray();
+                        this.outgoingHandler(() => buffer.getReadableStream(), buffer.size, this.offset)
+                            .then(resolve)
+                            .catch(reject);
+                    }
+                    else if (this.unresolvedLength >= this.bufferSize) {
+                        return;
+                    }
+                    else {
+                        resolve();
+                    }
+                }
             });
         });
-    };
+    }
     /**
      * Insert a new data into unresolved array.
      *
-     * @private
-     * @param {Buffer} data
-     * @memberof BufferScheduler
+     * @param data -
      */
-    BufferScheduler.prototype.appendUnresolvedData = function (data) {
+    appendUnresolvedData(data) {
         this.unresolvedDataArray.push(data);
         this.unresolvedLength += data.length;
-    };
+    }
     /**
      * Try to shift a buffer with size in blockSize. The buffer returned may be less
      * than blockSize when data in unresolvedDataArray is less than bufferSize.
      *
-     * @private
-     * @returns {PooledBuffer}
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.shiftBufferFromUnresolvedDataArray = function (buffer) {
+    shiftBufferFromUnresolvedDataArray(buffer) {
         if (!buffer) {
             buffer = new PooledBuffer(this.bufferSize, this.unresolvedDataArray, this.unresolvedLength);
         }
@@ -25733,7 +27879,7 @@ var BufferScheduler = /** @class */ (function () {
         }
         this.unresolvedLength -= buffer.size;
         return buffer;
-    };
+    }
     /**
      * Resolve data in unresolvedDataArray. For every buffer with size in blockSize
      * shifted, it will try to get (or allocate a buffer) from incoming, and fill it,
@@ -25741,13 +27887,11 @@ var BufferScheduler = /** @class */ (function () {
      *
      * Return false when available buffers in incoming are not enough, else true.
      *
-     * @private
-     * @returns {boolean} Return false when buffers in incoming are not enough, else true.
-     * @memberof BufferScheduler
+     * @returns Return false when buffers in incoming are not enough, else true.
      */
-    BufferScheduler.prototype.resolveData = function () {
+    resolveData() {
         while (this.unresolvedLength >= this.bufferSize) {
-            var buffer = void 0;
+            let buffer;
             if (this.incoming.length > 0) {
                 buffer = this.incoming.shift();
                 this.shiftBufferFromUnresolvedDataArray(buffer);
@@ -25766,191 +27910,128 @@ var BufferScheduler = /** @class */ (function () {
             this.triggerOutgoingHandlers();
         }
         return true;
-    };
+    }
     /**
      * Try to trigger a outgoing handler for every buffer in outgoing. Stop when
      * concurrency reaches.
-     *
-     * @private
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.triggerOutgoingHandlers = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer;
-            return tslib.__generator(this, function (_a) {
-                do {
-                    if (this.executingOutgoingHandlers >= this.concurrency) {
-                        return [2 /*return*/];
-                    }
-                    buffer = this.outgoing.shift();
-                    if (buffer) {
-                        this.triggerOutgoingHandler(buffer);
-                    }
-                } while (buffer);
-                return [2 /*return*/];
-            });
-        });
-    };
+    async triggerOutgoingHandlers() {
+        let buffer;
+        do {
+            if (this.executingOutgoingHandlers >= this.concurrency) {
+                return;
+            }
+            buffer = this.outgoing.shift();
+            if (buffer) {
+                this.triggerOutgoingHandler(buffer);
+            }
+        } while (buffer);
+    }
     /**
      * Trigger a outgoing handler for a buffer shifted from outgoing.
      *
-     * @private
-     * @param {Buffer} buffer
-     * @returns {Promise<any>}
-     * @memberof BufferScheduler
+     * @param buffer -
      */
-    BufferScheduler.prototype.triggerOutgoingHandler = function (buffer) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bufferLength, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        bufferLength = buffer.size;
-                        this.executingOutgoingHandlers++;
-                        this.offset += bufferLength;
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        return [4 /*yield*/, this.outgoingHandler(function () { return buffer.getReadableStream(); }, bufferLength, this.offset - bufferLength)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        this.emitter.emit("error", err_1);
-                        return [2 /*return*/];
-                    case 4:
-                        this.executingOutgoingHandlers--;
-                        this.reuseBuffer(buffer);
-                        this.emitter.emit("checkEnd");
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async triggerOutgoingHandler(buffer) {
+        const bufferLength = buffer.size;
+        this.executingOutgoingHandlers++;
+        this.offset += bufferLength;
+        try {
+            await this.outgoingHandler(() => buffer.getReadableStream(), bufferLength, this.offset - bufferLength);
+        }
+        catch (err) {
+            this.emitter.emit("error", err);
+            return;
+        }
+        this.executingOutgoingHandlers--;
+        this.reuseBuffer(buffer);
+        this.emitter.emit("checkEnd");
+    }
     /**
      * Return buffer used by outgoing handler into incoming.
      *
-     * @private
-     * @param {Buffer} buffer
-     * @memberof BufferScheduler
+     * @param buffer -
      */
-    BufferScheduler.prototype.reuseBuffer = function (buffer) {
+    reuseBuffer(buffer) {
         this.incoming.push(buffer);
         if (!this.isError && this.resolveData() && !this.isStreamEnd) {
             this.readable.resume();
         }
-    };
-    return BufferScheduler;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-/**
- * Creates a span using the global tracer.
- * @param name The name of the operation being performed.
- * @param tracingOptions The options for the underlying http request.
- */
-function createSpan(operationName, tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
-    var tracer = coreTracing.getTracer();
-    var spanOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { kind: api.SpanKind.INTERNAL });
-    var span = tracer.startSpan("Azure.Storage.Blob." + operationName, spanOptions);
-    span.setAttribute("az.namespace", "Microsoft.Storage");
-    var newOptions = tracingOptions.spanOptions || {};
-    if (span.isRecording()) {
-        newOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { parent: span.context(), attributes: tslib.__assign(tslib.__assign({}, spanOptions.attributes), { "az.namespace": "Microsoft.Storage" }) });
-    }
-    return {
-        span: span,
-        spanOptions: newOptions
-    };
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
 /**
  * Reads a readable stream into buffer. Fill the buffer from offset to end.
  *
- * @export
- * @param {NodeJS.ReadableStream} stream A Node.js Readable stream
- * @param {Buffer} buffer Buffer to be filled, length must >= offset
- * @param {number} offset From which position in the buffer to be filled, inclusive
- * @param {number} end To which position in the buffer to be filled, exclusive
- * @param {string} [encoding] Encoding of the Readable stream
- * @returns {Promise<void>}
+ * @param stream - A Node.js Readable stream
+ * @param buffer - Buffer to be filled, length must greater than or equal to offset
+ * @param offset - From which position in the buffer to be filled, inclusive
+ * @param end - To which position in the buffer to be filled, exclusive
+ * @param encoding - Encoding of the Readable stream
  */
-function streamToBuffer(stream, buffer, offset, end, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, count;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            count = end - offset;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        if (pos >= count) {
-                            resolve();
-                            return;
-                        }
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        // How much data needed in this chunk
-                        var chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
-                        buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
-                        pos += chunkLength;
-                    });
-                    stream.on("end", function () {
-                        if (pos < count) {
-                            reject(new Error("Stream drains before getting enough data needed. Data read: " + pos + ", data need: " + count));
-                        }
-                        resolve();
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer(stream, buffer, offset, end, encoding) {
+    let pos = 0; // Position in stream
+    const count = end - offset; // Total amount of data needed in stream
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            if (pos >= count) {
+                resolve();
+                return;
+            }
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            // How much data needed in this chunk
+            const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
+            buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
+            pos += chunkLength;
         });
+        stream.on("end", () => {
+            if (pos < count) {
+                reject(new Error(`Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`));
+            }
+            resolve();
+        });
+        stream.on("error", reject);
     });
 }
 /**
  * Reads a readable stream into buffer entirely.
  *
- * @export
- * @param {NodeJS.ReadableStream} stream A Node.js Readable stream
- * @param {Buffer} buffer Buffer to be filled, length must >= offset
- * @param {string} [encoding] Encoding of the Readable stream
- * @returns {Promise<number>} with the count of bytes read.
- * @throws {RangeError} If buffer size is not big enough.
+ * @param stream - A Node.js Readable stream
+ * @param buffer - Buffer to be filled, length must greater than or equal to offset
+ * @param encoding - Encoding of the Readable stream
+ * @returns with the count of bytes read.
+ * @throws `RangeError` If buffer size is not big enough.
  */
-function streamToBuffer2(stream, buffer, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, bufferSize;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            bufferSize = buffer.length;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        if (pos + chunk.length > bufferSize) {
-                            reject(new Error("Stream exceeds buffer size. Buffer size: " + bufferSize));
-                            return;
-                        }
-                        buffer.fill(chunk, pos, pos + chunk.length);
-                        pos += chunk.length;
-                    });
-                    stream.on("end", function () {
-                        resolve(pos);
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer2(stream, buffer, encoding) {
+    let pos = 0; // Position in stream
+    const bufferSize = buffer.length;
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            if (pos + chunk.length > bufferSize) {
+                reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));
+                return;
+            }
+            buffer.fill(chunk, pos, pos + chunk.length);
+            pos += chunk.length;
         });
+        stream.on("end", () => {
+            resolve(pos);
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -25958,26 +28039,20 @@ function streamToBuffer2(stream, buffer, encoding) {
  *
  * Writes the content of a readstream to a local file. Returns a Promise which is completed after the file handle is closed.
  *
- * @export
- * @param {NodeJS.ReadableStream} rs The read stream.
- * @param {string} file Destination file path.
- * @returns {Promise<void>}
+ * @param rs - The read stream.
+ * @param file - Destination file path.
  */
-function readStreamToLocalFile(rs, file) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var ws = fs.createWriteStream(file);
-                    rs.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("close", resolve);
-                    rs.pipe(ws);
-                })];
+async function readStreamToLocalFile(rs, file) {
+    return new Promise((resolve, reject) => {
+        const ws = fs.createWriteStream(file);
+        rs.on("error", (err) => {
+            reject(err);
         });
+        ws.on("error", (err) => {
+            reject(err);
+        });
+        ws.on("close", resolve);
+        rs.pipe(ws);
     });
 }
 /**
@@ -25985,25 +28060,22 @@ function readStreamToLocalFile(rs, file) {
  *
  * Promisified version of fs.stat().
  */
-var fsStat = util.promisify(fs.stat);
-var fsCreateReadStream = fs.createReadStream;
+const fsStat = util.promisify(fs.stat);
+const fsCreateReadStream = fs.createReadStream;
 
 /**
  * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,
  * append blob, or page blob.
- *
- * @export
- * @class BlobClient
  */
-var BlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobClient, _super);
-    function BlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _a;
-        var _this = this;
+class BlobClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         options = options || {};
-        var pipeline;
-        var url;
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        let pipeline;
+        let url;
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -26028,12 +28100,12 @@ var BlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -26053,80 +28125,68 @@ var BlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        (_a = _this.getBlobAndContainerNamesFromUrl(), _this._name = _a.blobName, _this._containerName = _a.containerName);
-        _this.blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        ({
+            blobName: this._name,
+            containerName: this._containerName
+        } = this.getBlobAndContainerNamesFromUrl());
+        this.blobContext = new Blob$1(this.storageClientContext);
+        this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);
+        this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);
+    }
+    /**
+     * The name of the blob.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * The name of the storage container the blob is associated with.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(BlobClient.prototype, "name", {
-        /**
-         * The name of the blob.
-         */
-        get: function () {
-            return this._name;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobClient.prototype, "containerName", {
-        /**
-         * The name of the storage container the blob is associated with.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {BlobClient} A new BlobClient object identical to the source but with the specified snapshot timestamp
-     * @memberof BlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp
      */
-    BlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a new BlobClient object pointing to a version of this blob.
      * Provide "" will remove the versionId and return a Client to the base blob.
      *
-     * @param {string} versionId The versionId.
-     * @returns {BlobClient} A new BlobClient object pointing to the version of this blob.
-     * @memberof BlobClient
+     * @param versionId - The versionId.
+     * @returns A new BlobClient object pointing to the version of this blob.
      */
-    BlobClient.prototype.withVersion = function (versionId) {
+    withVersion(versionId) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);
-    };
+    }
     /**
      * Creates a AppendBlobClient object.
      *
-     * @returns {AppendBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getAppendBlobClient = function () {
+    getAppendBlobClient() {
         return new AppendBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a BlockBlobClient object.
      *
-     * @returns {BlockBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getBlockBlobClient = function () {
+    getBlockBlobClient() {
         return new BlockBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a PageBlobClient object.
      *
-     * @returns {PageBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getPageBlobClient = function () {
+    getPageBlobClient() {
         return new PageBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Reads or downloads a blob from the system, including its metadata and properties.
      * You can also call Get Blob to read a snapshot.
@@ -26136,11 +28196,10 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob
      *
-     * @param {number} [offset] From which position of the blob to download, >= 0
-     * @param {number} [count] How much data to be downloaded, > 0. Will download to the end when undefined
-     * @param {BlobDownloadOptions} [options] Optional options to Blob Download operation.
-     * @returns {Promise<BlobDownloadResponseParsed>}
-     * @memberof BlobClient
+     * @param offset - From which position of the blob to download, greater than or equal to 0
+     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
+     * @param options - Optional options to Blob Download operation.
+     *
      *
      * Example usage (Node.js):
      *
@@ -26187,108 +28246,77 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      */
-    BlobClient.prototype.download = function (offset, count, options) {
+    async download(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res_1, wrappedRes, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlobClient-download", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.download({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress,
-                                range: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }),
-                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                snapshot: options.snapshot,
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res_1 = _c.sent();
-                        wrappedRes = tslib.__assign(tslib.__assign({}, res_1), { _response: res_1._response, objectReplicationDestinationPolicyId: res_1.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res_1.objectReplicationRules) });
-                        // We support retrying when download stream unexpected ends in Node.js runtime
-                        // Following code shouldn't be bundled into browser build, however some
-                        // bundlers may try to bundle following code and "FileReadResponse.ts".
-                        // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
-                        // The config is in package.json "browser" field
-                        if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
-                            // TODO: Default value or make it a required parameter?
-                            options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
-                        }
-                        if (res_1.contentLength === undefined) {
-                            throw new RangeError("File download response doesn't contain valid content length header");
-                        }
-                        if (!res_1.etag) {
-                            throw new RangeError("File download response doesn't contain valid etag header");
-                        }
-                        return [2 /*return*/, new BlobDownloadResponse(wrappedRes, function (start) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var updatedOptions;
-                                var _a;
-                                return tslib.__generator(this, function (_b) {
-                                    switch (_b.label) {
-                                        case 0:
-                                            updatedOptions = {
-                                                leaseAccessConditions: options.conditions,
-                                                modifiedAccessConditions: {
-                                                    ifMatch: options.conditions.ifMatch || res_1.etag,
-                                                    ifModifiedSince: options.conditions.ifModifiedSince,
-                                                    ifNoneMatch: options.conditions.ifNoneMatch,
-                                                    ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
-                                                    ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
-                                                },
-                                                range: rangeToString({
-                                                    count: offset + res_1.contentLength - start,
-                                                    offset: start
-                                                }),
-                                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                                snapshot: options.snapshot,
-                                                cpkInfo: options.customerProvidedKey
-                                            };
-                                            return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal }, updatedOptions))];
-                                        case 1: 
-                                        // Debug purpose only
-                                        // console.log(
-                                        //   `Read from internal stream, range: ${
-                                        //     updatedOptions.range
-                                        //   }, options: ${JSON.stringify(updatedOptions)}`
-                                        // );
-                                        return [2 /*return*/, (_b.sent()).readableStreamBody];
-                                    }
-                                });
-                            }); }, offset, res_1.contentLength, {
-                                abortSignal: options.abortSignal,
-                                maxRetryRequests: options.maxRetryRequests,
-                                onProgress: options.onProgress
-                            })];
-                    case 3:
-                        e_1 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.conditions = options.conditions || {};
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlobClient-download", options);
+        try {
+            const res = await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
+                }, range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+            // Return browser response immediately
+            if (false) {}
+            // We support retrying when download stream unexpected ends in Node.js runtime
+            // Following code shouldn't be bundled into browser build, however some
+            // bundlers may try to bundle following code and "FileReadResponse.ts".
+            // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
+            // The config is in package.json "browser" field
+            if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
+                // TODO: Default value or make it a required parameter?
+                options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
+            }
+            if (res.contentLength === undefined) {
+                throw new RangeError(`File download response doesn't contain valid content length header`);
+            }
+            if (!res.etag) {
+                throw new RangeError(`File download response doesn't contain valid etag header`);
+            }
+            return new BlobDownloadResponse(wrappedRes, async (start) => {
+                var _a;
+                const updatedDownloadOptions = {
+                    leaseAccessConditions: options.conditions,
+                    modifiedAccessConditions: {
+                        ifMatch: options.conditions.ifMatch || res.etag,
+                        ifModifiedSince: options.conditions.ifModifiedSince,
+                        ifNoneMatch: options.conditions.ifNoneMatch,
+                        ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
+                        ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
+                    },
+                    range: rangeToString({
+                        count: offset + res.contentLength - start,
+                        offset: start
+                    }),
+                    rangeGetContentMD5: options.rangeGetContentMD5,
+                    rangeGetContentCRC64: options.rangeGetContentCrc64,
+                    snapshot: options.snapshot,
+                    cpkInfo: options.customerProvidedKey
+                };
+                // Debug purpose only
+                // console.log(
+                //   `Read from internal stream, range: ${
+                //     updatedOptions.range
+                //   }, options: ${JSON.stringify(updatedOptions)}`
+                // );
+                return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedDownloadOptions))).readableStreamBody;
+            }, offset, res.contentLength, {
+                maxRetryRequests: options.maxRetryRequests,
+                onProgress: options.onProgress
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure blob resource represented by this client exists; false otherwise.
      *
@@ -26296,53 +28324,38 @@ var BlobClient = /** @class */ (function (_super) {
      * applications. Vice versa new blobs might be added by other clients or applications after this
      * function completes.
      *
-     * @param {BlobExistsOptions} [options] options to Exists operation.
-     * @returns {Promise<boolean>}
-     * @memberof BlobClient
+     * @param options - options to Exists operation.
      */
-    BlobClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-exists", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                customerProvidedKey: options.customerProvidedKey,
-                                conditions: options.conditions,
-                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_2 = _b.sent();
-                        if (e_2.statusCode === 404) {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when checking blob existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-exists", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                customerProvidedKey: options.customerProvidedKey,
+                conditions: options.conditions,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking blob existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns all user-defined metadata, standard HTTP properties, and system properties
      * for the blob. It does not return the content of the blob.
@@ -26353,49 +28366,28 @@ var BlobClient = /** @class */ (function (_super) {
      * the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which
      * will retain their original casing.
      *
-     * @param {BlobGetPropertiesOptions} [options] Optional options to Get Properties operation.
-     * @returns {Promise<BlobGetPropertiesResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Get Properties operation.
      */
-    BlobClient.prototype.getProperties = function (options) {
+    async getProperties(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res, e_3;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getProperties", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.getProperties({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res = _c.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) })];
-                    case 3:
-                        e_3 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getProperties", options);
+        try {
+            options.conditions = options.conditions || {};
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            const res = await this.blobContext.getProperties(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -26403,46 +28395,26 @@ var BlobClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {BlobDeleteOptions} [options] Optional options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.delete = function (options) {
+    async delete(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-delete", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.deleteMethod({
-                                abortSignal: options.abortSignal,
-                                deleteSnapshots: options.deleteSnapshots,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-delete", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.blobContext.delete(Object.assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -26450,90 +28422,58 @@ var BlobClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {BlobDeleteOptions} [options] Optional options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteIfExistsResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_5;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("BlobClient-deleteIfExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_5 = _d.sent();
-                        if (((_a = e_5.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when deleting a blob or snapshot only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_5.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_5.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a blob or snapshot only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restores the contents and metadata of soft deleted blob and any associated
      * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29
      * or later.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob
      *
-     * @param {BlobUndeleteOptions} [options] Optional options to Blob Undelete operation.
-     * @returns {Promise<BlobUndeleteResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Undelete operation.
      */
-    BlobClient.prototype.undelete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-undelete", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.undelete({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undelete(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-undelete", options);
+        try {
+            return await this.blobContext.undelete(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets system properties on the blob.
      *
@@ -26541,51 +28481,33 @@ var BlobClient = /** @class */ (function (_super) {
      * these blob HTTP headers without a value will be cleared.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
      *
-     * @param {BlobHTTPHeaders} [blobHTTPHeaders] If no value provided, or no value provided for
+     * @param blobHTTPHeaders - If no value provided, or no value provided for
      *                                                   the specified blob HTTP headers, these blob HTTP
      *                                                   headers without a value will be cleared.
-     * @param {BlobSetHTTPHeadersOptions} [options] Optional options to Blob Set HTTP Headers operation.
-     * @returns {Promise<BlobSetHTTPHeadersResponse>}
-     * @memberof BlobClient
+     *                                                   A common header to set is `blobContentType`
+     *                                                   enabling the browser to provide functionality
+     *                                                   based on file type.
+     * @param options - Optional options to Blob Set HTTP Headers operation.
      */
-    BlobClient.prototype.setHTTPHeaders = function (blobHTTPHeaders, options) {
+    async setHTTPHeaders(blobHTTPHeaders, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_7;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setHTTPHeaders", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setHTTPHeaders({
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_7 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setHTTPHeaders", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setHttpHeaders(Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets user-defined metadata for the specified blob as one or more name-value pairs.
      *
@@ -26593,196 +28515,113 @@ var BlobClient = /** @class */ (function (_super) {
      * metadata will be removed.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata
      *
-     * @param {Metadata} [metadata] Replace existing metadata with this value.
+     * @param metadata - Replace existing metadata with this value.
      *                               If no value provided the existing metadata will be removed.
-     * @param {BlobSetMetadataOptions} [options] Optional options to Set Metadata operation.
-     * @returns {Promise<BlobSetMetadataResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Set Metadata operation.
      */
-    BlobClient.prototype.setMetadata = function (metadata, options) {
+    async setMetadata(metadata, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_8;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setMetadata", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setMetadata({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_8 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setMetadata", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets tags on the underlying blob.
      * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters.  Tag values must be between 0 and 256 characters.
      * Valid tag key and value characters include lower and upper case letters, digits (0-9),
      * space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').
      *
-     * @param {Tags} tags
-     * @param {BlobSetTagsOptions} [options={}]
-     * @returns {Promise<BlobSetTagsResponse>}
-     * @memberof BlobClient
+     * @param tags -
+     * @param options -
      */
-    BlobClient.prototype.setTags = function (tags, options) {
+    async setTags(tags, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setTags", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTags({
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions,
-                                tags: toBlobTags(tags)
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setTags", options);
+        try {
+            return await this.blobContext.setTags(Object.assign(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the tags associated with the underlying blob.
      *
-     * @param {BlobGetTagsOptions} [options={}]
-     * @returns {Promise<BlobGetTagsResponse>}
-     * @memberof BlobClient
+     * @param options -
      */
-    BlobClient.prototype.getTags = function (options) {
+    async getTags(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getTags", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.getTags({
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _c.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getTags", options);
+        try {
+            const response = await this.blobContext.getTags(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the blob.
      *
-     * @param {string} [proposeLeaseId] Initial proposed lease Id.
-     * @returns {BlobLeaseClient} A new BlobLeaseClient object for managing leases on the blob.
-     * @memberof BlobClient
+     * @param proposeLeaseId - Initial proposed lease Id.
+     * @returns A new BlobLeaseClient object for managing leases on the blob.
      */
-    BlobClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a read-only snapshot of a blob.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob
      *
-     * @param {BlobCreateSnapshotOptions} [options] Optional options to the Blob Create Snapshot operation.
-     * @returns {Promise<BlobCreateSnapshotResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to the Blob Create Snapshot operation.
      */
-    BlobClient.prototype.createSnapshot = function (options) {
+    async createSnapshot(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_11;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-createSnapshot", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.createSnapshot({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_11 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-createSnapshot", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.createSnapshot(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * This method returns a long running operation poller that allows you to wait
@@ -26852,157 +28691,84 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} copySource url to the source Azure Blob/File.
-     * @param {BlobBeginCopyFromURLOptions} [options] Optional options to the Blob Start Copy From URL operation.
+     * @param copySource - url to the source Azure Blob/File.
+     * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.beginCopyFromURL = function (copySource, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var client, poller;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        client = {
-                            abortCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.abortCopyFromURL.apply(_this, args);
-                            },
-                            getProperties: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.getProperties.apply(_this, args);
-                            },
-                            startCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.startCopyFromURL.apply(_this, args);
-                            }
-                        };
-                        poller = new BlobBeginCopyFromUrlPoller({
-                            blobClient: client,
-                            copySource: copySource,
-                            intervalInMs: options.intervalInMs,
-                            onProgress: options.onProgress,
-                            resumeFrom: options.resumeFrom,
-                            startCopyFromURLOptions: options
-                        });
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        return [4 /*yield*/, poller.poll()];
-                    case 1:
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        _a.sent();
-                        return [2 /*return*/, poller];
-                }
-            });
+    async beginCopyFromURL(copySource, options = {}) {
+        const client = {
+            abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),
+            getProperties: (...args) => this.getProperties(...args),
+            startCopyFromURL: (...args) => this.startCopyFromURL(...args)
+        };
+        const poller = new BlobBeginCopyFromUrlPoller({
+            blobClient: client,
+            copySource,
+            intervalInMs: options.intervalInMs,
+            onProgress: options.onProgress,
+            resumeFrom: options.resumeFrom,
+            startCopyFromURLOptions: options
         });
-    };
+        // Trigger the startCopyFromURL call by calling poll.
+        // Any errors from this method should be surfaced to the user.
+        await poller.poll();
+        return poller;
+    }
     /**
      * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero
      * length and full metadata. Version 2012-02-12 and newer.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob
      *
-     * @param {string} copyId Id of the Copy From URL operation.
-     * @param {BlobAbortCopyFromURLOptions} [options] Optional options to the Blob Abort Copy From URL operation.
-     * @returns {Promise<BlobAbortCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copyId - Id of the Copy From URL operation.
+     * @param options - Optional options to the Blob Abort Copy From URL operation.
      */
-    BlobClient.prototype.abortCopyFromURL = function (copyId, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-abortCopyFromURL", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.abortCopyFromURL(copyId, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async abortCopyFromURL(copyId, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-abortCopyFromURL", options);
+        try {
+            return await this.blobContext.abortCopyFromURL(copyId, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not
      * return a response until the copy is complete.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url
      *
-     * @param {string} copySource The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
-     * @param {BlobSyncCopyFromURLOptions} [options={}]
-     * @returns {Promise<BlobCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
+     * @param options -
      */
-    BlobClient.prototype.syncCopyFromURL = function (copySource, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_13;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-syncCopyFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.copyFromURL(copySource, {
-                                abortSignal: options.abortSignal,
-                                metadata: options.metadata,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                sourceContentMD5: options.sourceContentMD5,
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_13 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async syncCopyFromURL(copySource, options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("BlobClient-syncCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.copyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, sourceContentMD5: options.sourceContentMD5, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), blobTagsString: toBlobTagsString(options.tags), immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant
@@ -27011,170 +28777,122 @@ var BlobClient = /** @class */ (function (_super) {
      * storage type. This operation does not update the blob's ETag.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier
      *
-     * @param {BlockBlobTier | PremiumPageBlobTier | string} tier The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
-     * @param {BlobSetTierOptions} [options] Optional options to the Blob Set Tier operation.
-     * @returns {Promise<BlobsSetTierResponse>}
-     * @memberof BlobClient
+     * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
+     * @param options - Optional options to the Blob Set Tier operation.
      */
-    BlobClient.prototype.setAccessTier = function (tier, options) {
+    async setAccessTier(tier, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_14;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setAccessTier", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTier(toAccessTier(tier), {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                rehydratePriority: options.rehydratePriority,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_14 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_14.message
-                        });
-                        throw e_14;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setAccessTier", options);
+        try {
+            return await this.blobContext.setTier(toAccessTier(tier), Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.downloadToBuffer = function (param1, param2, param3, param4) {
-        if (param4 === void 0) { param4 = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer, offset, count, options, _a, span, spanOptions, response, transferProgress_1, batch, _loop_1, off, e_15;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        offset = 0;
-                        count = 0;
-                        options = param4;
-                        if (param1 instanceof Buffer) {
-                            buffer = param1;
-                            offset = param2 || 0;
-                            count = typeof param3 === "number" ? param3 : 0;
-                        }
-                        else {
-                            offset = typeof param1 === "number" ? param1 : 0;
-                            count = typeof param2 === "number" ? param2 : 0;
-                            options = param3 || {};
-                        }
-                        _a = createSpan("BlobClient-downloadToBuffer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0) {
-                            throw new RangeError("blockSize option must be >= 0");
-                        }
-                        if (options.blockSize === 0) {
-                            options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                        }
-                        if (offset < 0) {
-                            throw new RangeError("offset option must be >= 0");
-                        }
-                        if (count && count <= 0) {
-                            throw new RangeError("count option must be > 0");
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (!!count) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.getProperties(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        count = response.contentLength - offset;
-                        if (count < 0) {
-                            throw new RangeError("offset " + offset + " shouldn't be larger than blob size " + response.contentLength);
-                        }
-                        _b.label = 3;
-                    case 3:
-                        // Allocate the buffer of size = count if the buffer is not provided
-                        if (!buffer) {
-                            try {
-                                buffer = Buffer.alloc(count);
-                            }
-                            catch (error) {
-                                throw new Error("Unable to allocate the buffer of size: " + count + "(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\t " + error.message);
-                            }
-                        }
-                        if (buffer.length < count) {
-                            throw new RangeError("The buffer's size should be equal to or larger than the request count of bytes: " + count);
-                        }
-                        transferProgress_1 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_1 = function (off) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var chunkEnd, response, stream;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            chunkEnd = offset + count;
-                                            if (off + options.blockSize < chunkEnd) {
-                                                chunkEnd = off + options.blockSize;
-                                            }
-                                            return [4 /*yield*/, this.download(off, chunkEnd - off, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    maxRetryRequests: options.maxRetryRequestsPerBlock,
-                                                    customerProvidedKey: options.customerProvidedKey,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            response = _a.sent();
-                                            stream = response.readableStreamBody;
-                                            return [4 /*yield*/, streamToBuffer(stream, buffer, off - offset, chunkEnd - offset)];
-                                        case 2:
-                                            _a.sent();
-                                            // Update progress after block is downloaded, in case of block trying
-                                            // Could provide finer grained progress updating inside HTTP requests,
-                                            // only if convenience layer download try is enabled
-                                            transferProgress_1 += chunkEnd - off;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_1 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (off = offset; off < offset + count; off = off + options.blockSize) {
-                            _loop_1(off);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, buffer];
-                    case 5:
-                        e_15 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_15.message
-                        });
-                        throw e_15;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async downloadToBuffer(param1, param2, param3, param4 = {}) {
+        let buffer;
+        let offset = 0;
+        let count = 0;
+        let options = param4;
+        if (param1 instanceof Buffer) {
+            buffer = param1;
+            offset = param2 || 0;
+            count = typeof param3 === "number" ? param3 : 0;
+        }
+        else {
+            offset = typeof param1 === "number" ? param1 : 0;
+            count = typeof param2 === "number" ? param2 : 0;
+            options = param3 || {};
+        }
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToBuffer", options);
+        try {
+            if (!options.blockSize) {
+                options.blockSize = 0;
+            }
+            if (options.blockSize < 0) {
+                throw new RangeError("blockSize option must be >= 0");
+            }
+            if (options.blockSize === 0) {
+                options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
+            }
+            if (offset < 0) {
+                throw new RangeError("offset option must be >= 0");
+            }
+            if (count && count <= 0) {
+                throw new RangeError("count option must be greater than 0");
+            }
+            if (!options.conditions) {
+                options.conditions = {};
+            }
+            // Customer doesn't specify length, get it
+            if (!count) {
+                const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+                count = response.contentLength - offset;
+                if (count < 0) {
+                    throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);
                 }
+            }
+            // Allocate the buffer of size = count if the buffer is not provided
+            if (!buffer) {
+                try {
+                    buffer = Buffer.alloc(count);
+                }
+                catch (error) {
+                    throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the "downloadToBuffer" method or try using other methods like "download" or "downloadToFile".\t ${error.message}`);
+                }
+            }
+            if (buffer.length < count) {
+                throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);
+            }
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let off = offset; off < offset + count; off = off + options.blockSize) {
+                batch.addOperation(async () => {
+                    // Exclusive chunk end position
+                    let chunkEnd = offset + count;
+                    if (off + options.blockSize < chunkEnd) {
+                        chunkEnd = off + options.blockSize;
+                    }
+                    const response = await this.download(off, chunkEnd - off, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        maxRetryRequests: options.maxRetryRequestsPerBlock,
+                        customerProvidedKey: options.customerProvidedKey,
+                        tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
+                    });
+                    const stream = response.readableStreamBody;
+                    await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);
+                    // Update progress after block is downloaded, in case of block trying
+                    // Could provide finer grained progress updating inside HTTP requests,
+                    // only if convenience layer download try is enabled
+                    transferProgress += chunkEnd - off;
+                    if (options.onProgress) {
+                        options.onProgress({ loadedBytes: transferProgress });
+                    }
+                });
+            }
+            await batch.do();
+            return buffer;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -27182,58 +28900,40 @@ var BlobClient = /** @class */ (function (_super) {
      * Fails if the the given file path already exits.
      * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.
      *
-     * @param {string} filePath
-     * @param {number} [offset] From which position of the block blob to download.
-     * @param {number} [count] How much data to be downloaded. Will download to the end when passing undefined.
-     * @param {BlobDownloadOptions} [options] Options to Blob download options.
-     * @returns {Promise<BlobDownloadResponseParsed>} The response data for blob download operation,
+     * @param filePath -
+     * @param offset - From which position of the block blob to download.
+     * @param count - How much data to be downloaded. Will download to the end when passing undefined.
+     * @param options - Options to Blob download options.
+     * @returns The response data for blob download operation,
      *                                                 but with readableStreamBody set to undefined since its
      *                                                 content is already read and written into a local file
      *                                                 at the specified path.
-     * @memberof BlobClient
      */
-    BlobClient.prototype.downloadToFile = function (filePath, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, e_16;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-downloadToFile", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        return [4 /*yield*/, this.download(offset, count, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        if (!response.readableStreamBody) return [3 /*break*/, 4];
-                        return [4 /*yield*/, readStreamToLocalFile(response.readableStreamBody, filePath)];
-                    case 3:
-                        _b.sent();
-                        _b.label = 4;
-                    case 4:
-                        // The stream is no longer accessible so setting it to undefined.
-                        response.blobDownloadStream = undefined;
-                        return [2 /*return*/, response];
-                    case 5:
-                        e_16 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_16.message
-                        });
-                        throw e_16;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
-                }
+    async downloadToFile(filePath, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToFile", options);
+        try {
+            const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+            if (response.readableStreamBody) {
+                await readStreamToLocalFile(response.readableStreamBody, filePath);
+            }
+            // The stream is no longer accessible so setting it to undefined.
+            response.blobDownloadStream = undefined;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.getBlobAndContainerNamesFromUrl = function () {
-        var containerName;
-        var blobName;
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    getBlobAndContainerNamesFromUrl() {
+        let containerName;
+        let blobName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer/blob?sasString";
@@ -27242,11 +28942,11 @@ var BlobClient = /** @class */ (function (_super) {
             // "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`
             // http://localhost:10001/devstoreaccount1/containername/blob
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -27254,14 +28954,14 @@ var BlobClient = /** @class */ (function (_super) {
                 // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob
                 // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob
                 // .getPath() -> /devstoreaccount1/containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
                 containerName = pathComponents[2];
                 blobName = pathComponents[4];
             }
             else {
                 // "https://customdomain.com/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -27271,18 +28971,15 @@ var BlobClient = /** @class */ (function (_super) {
             // Azure Storage Server will replace "\" with "/" in the blob names
             //   doing the same in the SDK side so that the user doesn't have to replace "\" instances in the blobName
             blobName = blobName.replace(/\\/g, "/");
-            if (!blobName) {
-                throw new Error("Provided blobName is invalid.");
-            }
-            else if (!containerName) {
+            if (!containerName) {
                 throw new Error("Provided containerName is invalid.");
             }
-            return { blobName: blobName, containerName: containerName };
+            return { blobName, containerName };
         }
         catch (error) {
             throw new Error("Unable to extract blobName and containerName with provided information.");
         }
-    };
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * In version 2012-02-12 and later, the source for a Copy Blob operation can be
@@ -27293,78 +28990,132 @@ var BlobClient = /** @class */ (function (_super) {
      * operation to copy from another storage account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob
      *
-     * @param {string} copySource url to the source Azure Blob/File.
-     * @param {BlobStartCopyFromURLOptions} [options] Optional options to the Blob Start Copy From URL operation.
-     * @returns {Promise<BlobStartCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copySource - url to the source Azure Blob/File.
+     * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.startCopyFromURL = function (copySource, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_17;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-startCopyFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.startCopyFromURL(copySource, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
-                                    sourceIfTags: options.sourceConditions.tagConditions
-                                },
-                                rehydratePriority: options.rehydratePriority,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                sealBlob: options.sealBlob,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_17 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_17.message
-                        });
-                        throw e_17;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async startCopyFromURL(copySource, options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("BlobClient-startCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.startCopyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
+                    sourceIfTags: options.sourceConditions.tagConditions
+                }, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Only available for BlobClient constructed with a shared key credential.
+     *
+     * Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     * @param options - Optional parameters.
+     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
+     */
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
+                throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
+            }
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
-    return BlobClient;
-}(StorageClient));
+    }
+    /**
+     * Delete the immutablility policy on the blob.
+     *
+     * @param options - Optional options to delete immutability policy on the blob.
+     */
+    async deleteImmutabilityPolicy(options) {
+        const { span, updatedOptions } = createSpan("BlobClient-deleteImmutabilityPolicy", options);
+        try {
+            return await this.blobContext.deleteImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Set immutablility policy on the blob.
+     *
+     * @param options - Optional options to set immutability policy on the blob.
+     */
+    async setImmutabilityPolicy(immutabilityPolicy, options) {
+        const { span, updatedOptions } = createSpan("BlobClient-setImmutabilityPolicy", options);
+        try {
+            return await this.blobContext.setImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal, immutabilityPolicyExpiry: immutabilityPolicy.expiriesOn, immutabilityPolicyMode: immutabilityPolicy.policyMode, modifiedAccessConditions: options === null || options === void 0 ? void 0 : options.modifiedAccessCondition }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Set legal hold on the blob.
+     *
+     * @param options - Optional options to set legal hold on the blob.
+     */
+    async setLegalHold(legalHoldEnabled, options) {
+        const { span, updatedOptions } = createSpan("BlobClient-setLegalHold", options);
+        try {
+            return await this.blobContext.setLegalHold(legalHoldEnabled, Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * AppendBlobClient defines a set of operations applicable to append blobs.
- *
- * @export
- * @class AppendBlobClient
- * @extends {BlobClient}
  */
-var AppendBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(AppendBlobClient, _super);
-    function AppendBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class AppendBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -27389,12 +29140,12 @@ var AppendBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -27414,29 +29165,26 @@ var AppendBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.appendBlobContext = new AppendBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.appendBlobContext = new AppendBlob(this.storageClientContext);
     }
     /**
      * Creates a new AppendBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {AppendBlobClient} A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof AppendBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    AppendBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {AppendBlobCreateOptions} [options] Options to the Append Block Create operation.
-     * @returns {Promise<AppendBlobCreateResponse>}
-     * @memberof AppendBlobClient
+     * @param options - Options to the Append Block Create operation.
+     *
      *
      * Example usage:
      *
@@ -27445,148 +29193,90 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await appendBlobClient.create();
      * ```
      */
-    AppendBlobClient.prototype.create = function (options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_18;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-create", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.create(0, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_18 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_18.message
-                        });
-                        throw e_18;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("AppendBlobClient-create", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.create(0, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * If the blob with the same name already exists, the content of the existing blob will remain unchanged.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {AppendBlobCreateIfNotExistsOptions} [options]
-     * @returns {Promise<AppendBlobCreateIfNotExistsResponse>}
-     * @memberof AppendBlobClient
+     * @param options -
      */
-    AppendBlobClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, conditions, res, e_19;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("AppendBlobClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        conditions = { ifNoneMatch: ETagAny };
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_19 = _d.sent();
-                        if (((_a = e_19.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_19.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_19.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_19.message
-                        });
-                        throw e_19;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-createIfNotExists", options);
+        const conditions = { ifNoneMatch: ETagAny };
+        try {
+            const res = await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Seals the append blob, making it read only.
      *
-     * @param {AppendBlobSealOptions} [options={}]
-     * @returns {Promise<AppendBlobAppendBlockResponse>}
-     * @memberof AppendBlobClient
+     * @param options -
      */
-    AppendBlobClient.prototype.seal = function (options) {
+    async seal(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_20;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-seal", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.appendBlobContext.seal({
-                                abortSignal: options.abortSignal,
-                                appendPositionAccessConditions: options.conditions,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_20 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_20.message
-                        });
-                        throw e_20;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-seal", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.appendBlobContext.seal(Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Commits a new block of data to the end of the existing append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/append-block
      *
-     * @param {HttpRequestBody} body Data to be appended.
-     * @param {number} contentLength Length of the body in bytes.
-     * @param {AppendBlobAppendBlockOptions} [options] Options to the Append Block operation.
-     * @returns {Promise<AppendBlobAppendBlockResponse>}
-     * @memberof AppendBlobClient
+     * @param body - Data to be appended.
+     * @param contentLength - Length of the body in bytes.
+     * @param options - Options to the Append Block operation.
+     *
      *
      * Example usage:
      *
@@ -27603,132 +29293,81 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await existingAppendBlobClient.appendBlock(content, content.length);
      * ```
      */
-    AppendBlobClient.prototype.appendBlock = function (body, contentLength, options) {
+    async appendBlock(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_21;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlock", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlock(body, contentLength, {
-                                abortSignal: options.abortSignal,
-                                appendPositionAccessConditions: options.conditions,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_21 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_21.message
-                        });
-                        throw e_21;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlock", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlock(contentLength, body, Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob
      * where the contents are read from a source url.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url
      *
-     * @param {string} sourceURL
+     * @param sourceURL -
      *                 The url to the blob that will be the source of the copy. A source blob in the same storage account can
      *                 be authenticated via Shared Key. However, if the source is a blob in another account, the source blob
      *                 must either be public or must be authenticated via a shared access signature. If the source blob is
      *                 public, no authentication is required to perform the operation.
-     * @param {number} sourceOffset Offset in source to be appended
-     * @param {number} count Number of bytes to be appended as a block
-     * @param {AppendBlobAppendBlockFromURLOptions} [options={}]
-     * @returns {Promise<AppendBlobAppendBlockFromUrlResponse>}
-     * @memberof AppendBlobClient
+     * @param sourceOffset - Offset in source to be appended
+     * @param count - Number of bytes to be appended as a block
+     * @param options -
      */
-    AppendBlobClient.prototype.appendBlockFromURL = function (sourceURL, sourceOffset, count, options) {
+    async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_22;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlockFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, {
-                                abortSignal: options.abortSignal,
-                                sourceRange: rangeToString({ offset: sourceOffset, count: count }),
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                leaseAccessConditions: options.conditions,
-                                appendPositionAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_22 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_22.message
-                        });
-                        throw e_22;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlockFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, Object.assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return AppendBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * BlockBlobClient defines a set of operations applicable to block blobs.
- *
- * @export
- * @class BlockBlobClient
- * @extends {BlobClient}
  */
-var BlockBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlockBlobClient, _super);
-    function BlockBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class BlockBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -27753,12 +29392,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -27778,23 +29417,21 @@ var BlockBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.blockBlobContext = new BlockBlob(_this.storageClientContext);
-        _this._blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.blockBlobContext = new BlockBlob(this.storageClientContext);
+        this._blobContext = new Blob$1(this.storageClientContext);
     }
     /**
      * Creates a new BlockBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a URL to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {BlockBlobClient} A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof BlockBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    BlockBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -27822,57 +29459,38 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} query
-     * @param {BlockBlobQueryOptions} [options={}]
-     * @returns {Promise<BlobDownloadResponseModel>}
-     * @memberof BlockBlobClient
+     * @param query -
+     * @param options -
      */
-    BlockBlobClient.prototype.query = function (query, options) {
+    async query(query, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, response, e_23;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlockBlobClient-query", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._blobContext.query({
-                                abortSignal: options.abortSignal,
-                                queryRequest: {
-                                    expression: query,
-                                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
-                                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
-                                },
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _c.sent();
-                        return [2 /*return*/, new BlobQueryResponse(response, {
-                                abortSignal: options.abortSignal,
-                                onProgress: options.onProgress,
-                                onError: options.onError
-                            })];
-                    case 3:
-                        e_23 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_23.message
-                        });
-                        throw e_23;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlockBlobClient-query", options);
+        try {
+            if (false) {}
+            const response = await this._blobContext.query(Object.assign({ abortSignal: options.abortSignal, queryRequest: {
+                    queryType: "SQL",
+                    expression: query,
+                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
+                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
+                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return new BlobQueryResponse(response, {
+                abortSignal: options.abortSignal,
+                onProgress: options.onProgress,
+                onError: options.onError
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      * Updating an existing block blob overwrites any existing metadata on the blob.
@@ -27886,13 +29504,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {HttpRequestBody} body Blob, string, ArrayBuffer, ArrayBufferView or a function
+     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
      *                               which returns a new Readable stream whose offset is from data source beginning.
-     * @param {number} contentLength Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
+     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
      *                               string including non non-Base64/Hex-encoded characters.
-     * @param {BlockBlobUploadOptions} [options] Options to the Block Blob Upload operation.
-     * @returns {Promise<BlockBlobUploadResponse>} Response data for the Block Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to the Block Blob Upload operation.
+     * @returns Response data for the Block Blob Upload operation.
      *
      * Example usage:
      *
@@ -27901,107 +29518,35 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    BlockBlobClient.prototype.upload = function (body, contentLength, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_24;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-upload", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.upload(body, contentLength, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_24 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_24.message
-                        });
-                        throw e_24;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async upload(body, contentLength, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-upload", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.upload(contentLength, body, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
-     * Uploads the specified block to the block blob's "staging area" to be later
-     * committed by a call to commitBlockList.
-     * @see https://docs.microsoft.com/rest/api/storageservices/put-block
+     * Creates a new Block Blob where the contents of the blob are read from a given URL.
+     * This API is supported beginning with the 2020-04-08 version. Partial updates
+     * are not supported with Put Blob from URL; the content of an existing blob is overwritten with
+     * the content of the new blob.  To perform partial updates to a block blob’s contents using a
+     * source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.
      *
-     * @param {string} blockId A 64-byte value that is base64-encoded
-     * @param {HttpRequestBody} body Data to upload to the staging area.
-     * @param {number} contentLength Number of bytes to upload.
-     * @param {BlockBlobStageBlockOptions} [options] Options to the Block Blob Stage Block operation.
-     * @returns {Promise<BlockBlobStageBlockResponse>} Response data for the Block Blob Stage Block operation.
-     * @memberof BlockBlobClient
-     */
-    BlockBlobClient.prototype.stageBlock = function (blockId, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_25;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlock", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlock(blockId, contentLength, body, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                onUploadProgress: options.onProgress,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_25 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_25.message
-                        });
-                        throw e_25;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    /**
-     * The Stage Block From URL operation creates a new block to be committed as part
-     * of a blob where the contents are read from a URL.
-     * This API is available starting in version 2018-03-28.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url
-     *
-     * @param {string} blockId A 64-byte value that is base64-encoded
-     * @param {string} sourceURL Specifies the URL of the blob. The value
+     * @param sourceURL - Specifies the URL of the blob. The value
      *                           may be a URL of up to 2 KB in length that specifies a blob.
      *                           The value should be URL-encoded as it would appear
      *                           in a request URI. The source blob must either be public
@@ -28010,51 +29555,101 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *                           to perform the operation. Here are some examples of source object URLs:
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
-     * @param {number} [offset] From which position of the blob to download, >= 0
-     * @param {number} [count] How much data to be downloaded, > 0. Will download to the end when undefined
-     * @param {BlockBlobStageBlockFromURLOptions} [options={}] Options to the Block Blob Stage Block From URL operation.
-     * @returns {Promise<BlockBlobStageBlockFromURLResponse>} Response data for the Block Blob Stage Block From URL operation.
-     * @memberof BlockBlobClient
+     * @param options - Optional parameters.
      */
-    BlockBlobClient.prototype.stageBlockFromURL = function (blockId, sourceURL, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_26;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlockFromURL", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_26 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_26.message
-                        });
-                        throw e_26;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async syncUploadFromURL(sourceURL, options = {}) {
+        var _a, _b, _c, _d, _e;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-syncUploadFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
+                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
+                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
+                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
+                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
+                }, cpkInfo: options.customerProvidedKey, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Uploads the specified block to the block blob's "staging area" to be later
+     * committed by a call to commitBlockList.
+     * @see https://docs.microsoft.com/rest/api/storageservices/put-block
+     *
+     * @param blockId - A 64-byte value that is base64-encoded
+     * @param body - Data to upload to the staging area.
+     * @param contentLength - Number of bytes to upload.
+     * @param options - Options to the Block Blob Stage Block operation.
+     * @returns Response data for the Block Blob Stage Block operation.
+     */
+    async stageBlock(blockId, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlock", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlock(blockId, contentLength, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * The Stage Block From URL operation creates a new block to be committed as part
+     * of a blob where the contents are read from a URL.
+     * This API is available starting in version 2018-03-28.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url
+     *
+     * @param blockId - A 64-byte value that is base64-encoded
+     * @param sourceURL - Specifies the URL of the blob. The value
+     *                           may be a URL of up to 2 KB in length that specifies a blob.
+     *                           The value should be URL-encoded as it would appear
+     *                           in a request URI. The source blob must either be public
+     *                           or must be authenticated via a shared access signature.
+     *                           If the source blob is public, no authentication is required
+     *                           to perform the operation. Here are some examples of source object URLs:
+     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob
+     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
+     * @param offset - From which position of the blob to download, greater than or equal to 0
+     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
+     * @param options - Options to the Block Blob Stage Block From URL operation.
+     * @returns Response data for the Block Blob Stage Block From URL operation.
+     */
+    async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlockFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes a blob by specifying the list of block IDs that make up the blob.
      * In order to be written as part of a blob, a block must have been successfully written
@@ -28063,329 +29658,278 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * blocks together. Any blocks not specified in the block list and permanently deleted.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-block-list
      *
-     * @param {string[]} blocks  Array of 64-byte value that is base64-encoded
-     * @param {BlockBlobCommitBlockListOptions} [options] Options to the Block Blob Commit Block List operation.
-     * @returns {Promise<BlockBlobCommitBlockListResponse>} Response data for the Block Blob Commit Block List operation.
-     * @memberof BlockBlobClient
+     * @param blocks -  Array of 64-byte value that is base64-encoded
+     * @param options - Options to the Block Blob Commit Block List operation.
+     * @returns Response data for the Block Blob Commit Block List operation.
      */
-    BlockBlobClient.prototype.commitBlockList = function (blocks, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_27;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-commitBlockList", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.commitBlockList({ latest: blocks }, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_27 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_27.message
-                        });
-                        throw e_27;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async commitBlockList(blocks, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-commitBlockList", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.commitBlockList({ latest: blocks }, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of blocks that have been uploaded as part of a block blob
      * using the specified block list filter.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-block-list
      *
-     * @param {BlockListType} listType Specifies whether to return the list of committed blocks,
+     * @param listType - Specifies whether to return the list of committed blocks,
      *                                        the list of uncommitted blocks, or both lists together.
-     * @param {BlockBlobGetBlockListOptions} [options] Options to the Block Blob Get Block List operation.
-     * @returns {Promise<BlockBlobGetBlockListResponse>} Response data for the Block Blob Get Block List operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to the Block Blob Get Block List operation.
+     * @returns Response data for the Block Blob Get Block List operation.
      */
-    BlockBlobClient.prototype.getBlockList = function (listType, options) {
+    async getBlockList(listType, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res, e_28;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlockBlobClient-getBlockList", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blockBlobContext.getBlockList(listType, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res = _c.sent();
-                        if (!res.committedBlocks) {
-                            res.committedBlocks = [];
-                        }
-                        if (!res.uncommittedBlocks) {
-                            res.uncommittedBlocks = [];
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_28 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_28.message
-                        });
-                        throw e_28;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-getBlockList", options);
+        try {
+            const res = await this.blockBlobContext.getBlockList(listType, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            if (!res.committedBlocks) {
+                res.committedBlocks = [];
+            }
+            if (!res.uncommittedBlocks) {
+                res.uncommittedBlocks = [];
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     // High level functions
+    /**
+     * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.
+     *
+     * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
+     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
+     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
+     * to commit the block list.
+     *
+     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is
+     * `blobContentType`, enabling the browser to provide
+     * functionality based on file type.
+     *
+     * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView
+     * @param options -
+     */
+    async uploadData(data, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadData", options);
+        try {
+            if (true) {
+                let buffer;
+                if (data instanceof Buffer) {
+                    buffer = data;
+                }
+                else if (data instanceof ArrayBuffer) {
+                    buffer = Buffer.from(data);
+                }
+                else {
+                    data = data;
+                    buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
+                }
+                return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);
+            }
+            else {}
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN BROWSERS.
      *
      * Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.
      *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
+     * When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
      * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call
      * {@link commitBlockList} to commit the block list.
      *
-     * @export
-     * @param {Blob | ArrayBuffer | ArrayBufferView} browserData Blob, File, ArrayBuffer or ArrayBufferView
-     * @param {BlockBlobParallelUploadOptions} [options] Options to upload browser data.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is
+     * `blobContentType`, enabling the browser to provide
+     * functionality based on file type.
+     *
+     * @deprecated Use {@link uploadData} instead.
+     *
+     * @param browserData - Blob, File, ArrayBuffer or ArrayBufferView
+     * @param options - Options to upload browser data.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadBrowserData = function (browserData, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, browserBlob_1, e_29;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadBrowserData", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        browserBlob_1 = new Blob([browserData]);
-                        return [4 /*yield*/, this.uploadSeekableBlob(function (offset, size) {
-                                return browserBlob_1.slice(offset, offset + size);
-                            }, browserBlob_1.size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_29 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_29.message
-                        });
-                        throw e_29;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBrowserData(browserData, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadBrowserData", options);
+        try {
+            const browserBlob = new Blob([browserData]);
+            return await this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
-     * ONLY AVAILABLE IN BROWSERS.
      *
-     * Uploads a browser {@link Blob} object to block blob. Requires a blobFactory as the data source,
-     * which need to return a {@link Blob} object with the offset and size provided.
+     * Uploads data to block blob. Requires a bodyFactory as the data source,
+     * which need to return a {@link HttpRequestBody} object with the offset and size provided.
      *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
-     * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList
+     * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
+     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
+     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
      * to commit the block list.
      *
-     * @param {(offset: number, size: number) => Blob} blobFactory
-     * @param {number} size size of the data to upload.
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param bodyFactory -
+     * @param size - size of the data to upload.
+     * @param options - Options to Upload to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadSeekableBlob = function (blobFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, numBlocks_1, blockList_1, blockIDPrefix_1, transferProgress_2, batch, _loop_2, i, e_30;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-UploadSeekableBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(blobFactory(0, size), size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_1 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_1 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_1 = [];
-                        blockIDPrefix_1 = coreHttp.generateUuid();
-                        transferProgress_2 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_2 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_1, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_1 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_1.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, blobFactory(start, contentLength), contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            // TODO: Hook with convenience layer progress event in finer level
-                                            transferProgress_2 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({
-                                                    loadedBytes: transferProgress_2
-                                                });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_1; i++) {
-                            _loop_2(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, this.commitBlockList(blockList_1, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 5:
-                        e_30 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_30.message
-                        });
-                        throw e_30;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+    async uploadSeekableInternal(bodyFactory, size, options = {}) {
+        if (!options.blockSize) {
+            options.blockSize = 0;
+        }
+        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
+            throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);
+        }
+        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
+            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
+        }
+        if (options.maxSingleShotSize < 0 ||
+            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
+            throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);
+        }
+        if (options.blockSize === 0) {
+            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`${size} is too larger to upload to a block blob.`);
+            }
+            if (size > options.maxSingleShotSize) {
+                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
+                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
+                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
                 }
+            }
+        }
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadSeekableInternal", options);
+        try {
+            if (size <= options.maxSingleShotSize) {
+                return await this.upload(bodyFactory(0, size), size, updatedOptions);
+            }
+            const numBlocks = Math.floor((size - 1) / options.blockSize) + 1;
+            if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +
+                    `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);
+            }
+            const blockList = [];
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let i = 0; i < numBlocks; i++) {
+                batch.addOperation(async () => {
+                    const blockID = generateBlockID(blockIDPrefix, i);
+                    const start = options.blockSize * i;
+                    const end = i === numBlocks - 1 ? size : start + options.blockSize;
+                    const contentLength = end - start;
+                    blockList.push(blockID);
+                    await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        encryptionScope: options.encryptionScope,
+                        tracingOptions: updatedOptions.tracingOptions
+                    });
+                    // Update progress after block is successfully uploaded to server, in case of block trying
+                    // TODO: Hook with convenience layer progress event in finer level
+                    transferProgress += contentLength;
+                    if (options.onProgress) {
+                        options.onProgress({
+                            loadedBytes: transferProgress
+                        });
+                    }
+                });
+            }
+            await batch.do();
+            return this.commitBlockList(blockList, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
      * Uploads a local file in blocks to a block blob.
      *
-     * When file size <= 256MB, this method will use 1 upload call to finish the upload.
+     * When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
      * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList
      * to commit the block list.
      *
-     * @param {string} filePath Full path of local file
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {(Promise<BlobUploadCommonResponse>)}  Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param filePath - Full path of local file
+     * @param options - Options to Upload to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadFile = function (filePath, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, size, e_31;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadFile", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        return [4 /*yield*/, fsStat(filePath)];
-                    case 2:
-                        size = (_b.sent()).size;
-                        return [4 /*yield*/, this.uploadResetableStream(function (offset, count) {
-                                return fsCreateReadStream(filePath, {
-                                    autoClose: true,
-                                    end: count ? offset + count - 1 : Infinity,
-                                    start: offset
-                                });
-                            }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_31 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_31.message
-                        });
-                        throw e_31;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async uploadFile(filePath, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadFile", options);
+        try {
+            const size = (await fsStat(filePath)).size;
+            return await this.uploadSeekableInternal((offset, count) => {
+                return () => fsCreateReadStream(filePath, {
+                    autoClose: true,
+                    end: count ? offset + count - 1 : Infinity,
+                    start: offset
+                });
+            }, size, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -28395,232 +29939,75 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * * Input stream highWaterMark is better to set a same value with bufferSize
      *    parameter, which will avoid Buffer.concat() operations.
      *
-     * @param {Readable} stream Node.js Readable stream
-     * @param {number} bufferSize Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB
-     * @param {number} maxConcurrency  Max concurrency indicates the max number of buffers that can be allocated,
+     * @param stream - Node.js Readable stream
+     * @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB
+     * @param maxConcurrency -  Max concurrency indicates the max number of buffers that can be allocated,
      *                                 positive correlation with max uploading concurrency. Default value is 5
-     * @param {BlockBlobUploadStreamOptions} [options] Options to Upload Stream to Block Blob operation.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to Upload Stream to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadStream = function (stream, bufferSize, maxConcurrency, options) {
-        if (bufferSize === void 0) { bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES; }
-        if (maxConcurrency === void 0) { maxConcurrency = 5; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blockNum_1, blockIDPrefix_2, transferProgress_3, blockList_2, scheduler, e_32;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadStream", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        blockNum_1 = 0;
-                        blockIDPrefix_2 = coreHttp.generateUuid();
-                        transferProgress_3 = 0;
-                        blockList_2 = [];
-                        scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, function (body, length) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            var blockID;
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0:
-                                        blockID = generateBlockID(blockIDPrefix_2, blockNum_1);
-                                        blockList_2.push(blockID);
-                                        blockNum_1++;
-                                        return [4 /*yield*/, this.stageBlock(blockID, body, length, {
-                                                conditions: options.conditions,
-                                                encryptionScope: options.encryptionScope,
-                                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                            })];
-                                    case 1:
-                                        _a.sent();
-                                        // Update progress after block is successfully uploaded to server, in case of block trying
-                                        transferProgress_3 += length;
-                                        if (options.onProgress) {
-                                            options.onProgress({ loadedBytes: transferProgress_3 });
-                                        }
-                                        return [2 /*return*/];
-                                }
-                            });
-                        }); }, 
-                        // concurrency should set a smaller value than maxConcurrency, which is helpful to
-                        // reduce the possibility when a outgoing handler waits for stream data, in
-                        // this situation, outgoing handlers are blocked.
-                        // Outgoing queue shouldn't be empty.
-                        Math.ceil((maxConcurrency / 4) * 3));
-                        return [4 /*yield*/, scheduler.do()];
-                    case 2:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_2, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_32 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_32.message
-                        });
-                        throw e_32;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
+    async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadStream", options);
+        try {
+            let blockNum = 0;
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const blockList = [];
+            const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {
+                const blockID = generateBlockID(blockIDPrefix, blockNum);
+                blockList.push(blockID);
+                blockNum++;
+                await this.stageBlock(blockID, body, length, {
+                    conditions: options.conditions,
+                    encryptionScope: options.encryptionScope,
+                    tracingOptions: updatedOptions.tracingOptions
+                });
+                // Update progress after block is successfully uploaded to server, in case of block trying
+                transferProgress += length;
+                if (options.onProgress) {
+                    options.onProgress({ loadedBytes: transferProgress });
                 }
+            }, 
+            // concurrency should set a smaller value than maxConcurrency, which is helpful to
+            // reduce the possibility when a outgoing handler waits for stream data, in
+            // this situation, outgoing handlers are blocked.
+            // Outgoing queue shouldn't be empty.
+            Math.ceil((maxConcurrency / 4) * 3));
+            await scheduler.do();
+            return await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    /**
-     * ONLY AVAILABLE IN NODE.JS RUNTIME.
-     *
-     * Accepts a Node.js Readable stream factory, and uploads in blocks to a block blob.
-     * The Readable stream factory must returns a Node.js Readable stream starting from the offset defined. The offset
-     * is the offset in the block blob to be uploaded.
-     *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
-     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
-     * to commit the block list.
-     *
-     * @export
-     * @param {(offset: number) => NodeJS.ReadableStream} streamFactory Returns a Node.js Readable stream starting
-     *                                                                  from the offset defined
-     * @param {number} size Size of the block blob
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {(Promise<BlobUploadCommonResponse>)}  Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
-     */
-    BlockBlobClient.prototype.uploadResetableStream = function (streamFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, numBlocks_2, blockList_3, blockIDPrefix_3, transferProgress_4, batch, _loop_3, i, e_33;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_BLOCKS * BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadResetableStream", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 6, 7, 8]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(function () { return streamFactory(0); }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_2 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_2 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_3 = [];
-                        blockIDPrefix_3 = coreHttp.generateUuid();
-                        transferProgress_4 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_3 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_3, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_2 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_3.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, function () { return streamFactory(start, contentLength); }, contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            transferProgress_4 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_4 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_2; i++) {
-                            _loop_3(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_3, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 5: return [2 /*return*/, _b.sent()];
-                    case 6:
-                        e_33 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_33.message
-                        });
-                        throw e_33;
-                    case 7:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 8: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlockBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * PageBlobClient defines a set of operations applicable to page blobs.
- *
- * @export
- * @class PageBlobClient
- * @extends {BlobClient}
  */
-var PageBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(PageBlobClient, _super);
-    function PageBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class PageBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -28645,12 +30032,12 @@ var PageBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -28670,531 +30057,320 @@ var PageBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.pageBlobContext = new PageBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.pageBlobContext = new PageBlob(this.storageClientContext);
     }
     /**
      * Creates a new PageBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {PageBlobClient} A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof PageBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    PageBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {number} size size of the page blob.
-     * @param {PageBlobCreateOptions} [options] Options to the Page Blob Create operation.
-     * @returns {Promise<PageBlobCreateResponse>} Response data for the Page Blob Create operation.
-     * @memberof PageBlobClient
+     * @param size - size of the page blob.
+     * @param options - Options to the Page Blob Create operation.
+     * @returns Response data for the Page Blob Create operation.
      */
-    PageBlobClient.prototype.create = function (size, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_34;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-create", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.create(0, size, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                blobSequenceNumber: options.blobSequenceNumber,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_34 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_34.message
-                        });
-                        throw e_34;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(size, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-create", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.create(0, size, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob. If the blob with the same name already exists, the content
      * of the existing blob will remain unchanged.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {number} size size of the page blob.
-     * @param {PageBlobCreateIfNotExistsOptions} [options]
-     * @returns {Promise<PageBlobCreateIfNotExistsResponse>}
-     * @memberof PageBlobClient
+     * @param size - size of the page blob.
+     * @param options -
      */
-    PageBlobClient.prototype.createIfNotExists = function (size, options) {
+    async createIfNotExists(size, options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, conditions, res, e_35;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("PageBlobClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        conditions = { ifNoneMatch: ETagAny };
-                        return [4 /*yield*/, this.create(size, tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_35 = _d.sent();
-                        if (((_a = e_35.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_35.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_35.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_35.message
-                        });
-                        throw e_35;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-createIfNotExists", options);
+        try {
+            const conditions = { ifNoneMatch: ETagAny };
+            const res = await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
      *
-     * @param {HttpRequestBody} body Data to upload
-     * @param {number} offset Offset of destination page blob
-     * @param {number} count Content length of the body, also number of bytes to be uploaded
-     * @param {PageBlobUploadPagesOptions} [options] Options to the Page Blob Upload Pages operation.
-     * @returns {Promise<PageBlobsUploadPagesResponse>} Response data for the Page Blob Upload Pages operation.
-     * @memberof PageBlobClient
+     * @param body - Data to upload
+     * @param offset - Offset of destination page blob
+     * @param count - Content length of the body, also number of bytes to be uploaded
+     * @param options - Options to the Page Blob Upload Pages operation.
+     * @returns Response data for the Page Blob Upload Pages operation.
      */
-    PageBlobClient.prototype.uploadPages = function (body, offset, count, options) {
+    async uploadPages(body, offset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_36;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-uploadPages", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPages(body, count, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                range: rangeToString({ offset: offset, count: count }),
-                                sequenceNumberAccessConditions: options.conditions,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_36 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_36.message
-                        });
-                        throw e_36;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPages", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPages(count, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the
      * contents are read from a URL.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url
      *
-     * @param {string} sourceURL Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication
-     * @param {number} sourceOffset The source offset to copy from. Pass 0 to copy from the beginning of source page blob
-     * @param {number} destOffset Offset of destination page blob
-     * @param {number} count Number of bytes to be uploaded from source page blob
-     * @param {PageBlobUploadPagesFromURLOptions} [options={}]
-     * @returns {Promise<PageBlobUploadPagesFromURLResponse>}
-     * @memberof PageBlobClient
+     * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication
+     * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob
+     * @param destOffset - Offset of destination page blob
+     * @param count - Number of bytes to be uploaded from source page blob
+     * @param options -
      */
-    PageBlobClient.prototype.uploadPagesFromURL = function (sourceURL, sourceOffset, destOffset, count, options) {
+    async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_37;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _b = createSpan("PageBlobClient-uploadPagesFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count: count }), 0, rangeToString({ offset: destOffset, count: count }), {
-                                abortSignal: options.abortSignal,
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                leaseAccessConditions: options.conditions,
-                                sequenceNumberAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_37 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_37.message
-                        });
-                        throw e_37;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPagesFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), Object.assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Frees the specified pages from the page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
      *
-     * @param {number} [offset] Starting byte position of the pages to clear.
-     * @param {number} [count] Number of bytes to clear.
-     * @param {PageBlobClearPagesOptions} [options] Options to the Page Blob Clear Pages operation.
-     * @returns {Promise<PageBlobClearPagesResponse>} Response data for the Page Blob Clear Pages operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the pages to clear.
+     * @param count - Number of bytes to clear.
+     * @param options - Options to the Page Blob Clear Pages operation.
+     * @returns Response data for the Page Blob Clear Pages operation.
      */
-    PageBlobClient.prototype.clearPages = function (offset, count, options) {
+    async clearPages(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_38;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-clearPages", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.clearPages(0, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                range: rangeToString({ offset: offset, count: count }),
-                                sequenceNumberAccessConditions: options.conditions,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_38 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_38.message
-                        });
-                        throw e_38;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-clearPages", options);
+        try {
+            return await this.pageBlobContext.clearPages(0, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of valid page ranges for a page blob or snapshot of a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} [offset] Starting byte position of the page ranges.
-     * @param {number} [count] Number of bytes to get.
-     * @param {PageBlobGetPageRangesOptions} [options] Options to the Page Blob Get Ranges operation.
-     * @returns {Promise<PageBlobGetPageRangesResponse>} Response data for the Page Blob Get Ranges operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page ranges.
+     * @param count - Number of bytes to get.
+     * @param options - Options to the Page Blob Get Ranges operation.
+     * @returns Response data for the Page Blob Get Ranges operation.
      */
-    PageBlobClient.prototype.getPageRanges = function (offset, count, options) {
+    async getPageRanges(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_39;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRanges", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRanges({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_39 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_39.message
-                        });
-                        throw e_39;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRanges", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} offset Starting byte position of the page blob
-     * @param {number} count Number of bytes to get ranges diff.
-     * @param {string} prevSnapshot Timestamp of snapshot to retrieve the difference.
-     * @param {PageBlobGetPageRangesDiffOptions} [options] Options to the Page Blob Get Page Ranges Diff operation.
-     * @returns {Promise<PageBlobGetPageRangesDiffResponse>} Response data for the Page Blob Get Page Range Diff operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page blob
+     * @param count - Number of bytes to get ranges diff.
+     * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.
+     * @param options - Options to the Page Blob Get Page Ranges Diff operation.
+     * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiff = function (offset, count, prevSnapshot, options) {
+    async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_40;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRangesDiff", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                prevsnapshot: prevSnapshot,
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_40 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_40.message
-                        });
-                        throw e_40;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRangesDiff", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} offset Starting byte position of the page blob
-     * @param {number} count Number of bytes to get ranges diff.
-     * @param {string} prevSnapshotUrl URL of snapshot to retrieve the difference.
-     * @param {PageBlobGetPageRangesDiffOptions} [options] Options to the Page Blob Get Page Ranges Diff operation.
-     * @returns {Promise<PageBlobGetPageRangesDiffResponse>} Response data for the Page Blob Get Page Range Diff operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page blob
+     * @param count - Number of bytes to get ranges diff.
+     * @param prevSnapshotUrl - URL of snapshot to retrieve the difference.
+     * @param options - Options to the Page Blob Get Page Ranges Diff operation.
+     * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiffForManagedDisks = function (offset, count, prevSnapshotUrl, options) {
+    async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_41;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                prevSnapshotUrl: prevSnapshotUrl,
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_41 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_41.message
-                        });
-                        throw e_41;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Resizes the page blob to the specified size (which must be a multiple of 512).
      * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties
      *
-     * @param {number} size Target size
-     * @param {PageBlobResizeOptions} [options] Options to the Page Blob Resize operation.
-     * @returns {Promise<PageBlobResizeResponse>} Response data for the Page Blob Resize operation.
-     * @memberof PageBlobClient
+     * @param size - Target size
+     * @param options - Options to the Page Blob Resize operation.
+     * @returns Response data for the Page Blob Resize operation.
      */
-    PageBlobClient.prototype.resize = function (size, options) {
+    async resize(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_42;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-resize", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.resize(size, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_42 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_42.message
-                        });
-                        throw e_42;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-resize", options);
+        try {
+            return await this.pageBlobContext.resize(size, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets a page blob's sequence number.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
      *
-     * @param {SequenceNumberActionType} sequenceNumberAction Indicates how the service should modify the blob's sequence number.
-     * @param {number} [sequenceNumber] Required if sequenceNumberAction is max or update
-     * @param {PageBlobUpdateSequenceNumberOptions} [options] Options to the Page Blob Update Sequence Number operation.
-     * @returns {Promise<PageBlobUpdateSequenceNumberResponse>} Response data for the Page Blob Update Sequence Number operation.
-     * @memberof PageBlobClient
+     * @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.
+     * @param sequenceNumber - Required if sequenceNumberAction is max or update
+     * @param options - Options to the Page Blob Update Sequence Number operation.
+     * @returns Response data for the Page Blob Update Sequence Number operation.
      */
-    PageBlobClient.prototype.updateSequenceNumber = function (sequenceNumberAction, sequenceNumber, options) {
+    async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_43;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-updateSequenceNumber", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, {
-                                abortSignal: options.abortSignal,
-                                blobSequenceNumber: sequenceNumber,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_43 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_43.message
-                        });
-                        throw e_43;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-updateSequenceNumber", options);
+        try {
+            return await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, Object.assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
      * The snapshot is copied such that only the differential changes between the previously
@@ -29203,375 +30379,663 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob
      * @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots
      *
-     * @param {string} copySource Specifies the name of the source page blob snapshot. For example,
+     * @param copySource - Specifies the name of the source page blob snapshot. For example,
      *                            https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
-     * @param {PageBlobStartCopyIncrementalOptions} [options] Options to the Page Blob Copy Incremental operation.
-     * @returns {Promise<PageBlobCopyIncrementalResponse>} Response data for the Page Blob Copy Incremental operation.
-     * @memberof PageBlobClient
+     * @param options - Options to the Page Blob Copy Incremental operation.
+     * @returns Response data for the Page Blob Copy Incremental operation.
      */
-    PageBlobClient.prototype.startCopyIncremental = function (copySource, options) {
+    async startCopyIncremental(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_44;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("PageBlobClient-startCopyIncremental", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.copyIncremental(copySource, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_44 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_44.message
-                        });
-                        throw e_44;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-startCopyIncremental", options);
+        try {
+            return await this.pageBlobContext.copyIncremental(copySource, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return PageBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+async function getBodyAsText(batchResponse) {
+    let buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
+    const responseLength = await streamToBuffer2(batchResponse.readableStreamBody, buffer);
+    // Slice the buffer to trim the empty ending.
+    buffer = buffer.slice(0, responseLength);
+    return buffer.toString();
+}
+function utf8ByteLength(str) {
+    return Buffer.byteLength(str);
+}
+
+// Copyright (c) Microsoft Corporation.
+const HTTP_HEADER_DELIMITER = ": ";
+const SPACE_DELIMITER = " ";
+const NOT_FOUND = -1;
 /**
- * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
- *
- * @export
- * @class BlobLeaseClient
+ * Util class for parsing batch response.
  */
-var BlobLeaseClient = /** @class */ (function () {
+class BatchResponseParser {
+    constructor(batchResponse, subRequests) {
+        if (!batchResponse || !batchResponse.contentType) {
+            // In special case(reported), server may return invalid content-type which could not be parsed.
+            throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
+        }
+        if (!subRequests || subRequests.size === 0) {
+            // This should be prevent during coding.
+            throw new RangeError("Invalid state: subRequests is not provided or size is 0.");
+        }
+        this.batchResponse = batchResponse;
+        this.subRequests = subRequests;
+        this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
+        this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;
+        this.batchResponseEnding = `--${this.responseBatchBoundary}--`;
+    }
+    // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
+    async parseBatchResponse() {
+        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
+        // sub request's response.
+        if (this.batchResponse._response.status !== HTTPURLConnection.HTTP_ACCEPTED) {
+            throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);
+        }
+        const responseBodyAsText = await getBodyAsText(this.batchResponse);
+        const subResponses = responseBodyAsText
+            .split(this.batchResponseEnding)[0] // string after ending is useless
+            .split(this.perResponsePrefix)
+            .slice(1); // string before first response boundary is useless
+        const subResponseCount = subResponses.length;
+        // Defensive coding in case of potential error parsing.
+        // Note: subResponseCount == 1 is special case where sub request is invalid.
+        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
+        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
+        if (subResponseCount !== this.subRequests.size && subResponseCount !== 1) {
+            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
+        }
+        const deserializedSubResponses = new Array(subResponseCount);
+        let subResponsesSucceededCount = 0;
+        let subResponsesFailedCount = 0;
+        // Parse sub subResponses.
+        for (let index = 0; index < subResponseCount; index++) {
+            const subResponse = subResponses[index];
+            const deserializedSubResponse = {};
+            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
+            const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);
+            let subRespHeaderStartFound = false;
+            let subRespHeaderEndFound = false;
+            let subRespFailed = false;
+            let contentId = NOT_FOUND;
+            for (const responseLine of responseLines) {
+                if (!subRespHeaderStartFound) {
+                    // Convention line to indicate content ID
+                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
+                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
+                    }
+                    // Http version line with status code indicates the start of sub request's response.
+                    // Example: HTTP/1.1 202 Accepted
+                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
+                        subRespHeaderStartFound = true;
+                        const tokens = responseLine.split(SPACE_DELIMITER);
+                        deserializedSubResponse.status = parseInt(tokens[1]);
+                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
+                    }
+                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
+                }
+                if (responseLine.trim() === "") {
+                    // Sub response's header start line already found, and the first empty line indicates header end line found.
+                    if (!subRespHeaderEndFound) {
+                        subRespHeaderEndFound = true;
+                    }
+                    continue; // Skip empty line
+                }
+                // Note: when code reach here, it indicates subRespHeaderStartFound == true
+                if (!subRespHeaderEndFound) {
+                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
+                        // Defensive coding to prevent from missing valuable lines.
+                        throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);
+                    }
+                    // Parse headers of sub response.
+                    const tokens = responseLine.split(HTTP_HEADER_DELIMITER);
+                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
+                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
+                        deserializedSubResponse.errorCode = tokens[1];
+                        subRespFailed = true;
+                    }
+                }
+                else {
+                    // Assemble body of sub response.
+                    if (!deserializedSubResponse.bodyAsText) {
+                        deserializedSubResponse.bodyAsText = "";
+                    }
+                    deserializedSubResponse.bodyAsText += responseLine;
+                }
+            } // Inner for end
+            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
+            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
+            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
+            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
+            if (contentId !== NOT_FOUND &&
+                Number.isInteger(contentId) &&
+                contentId >= 0 &&
+                contentId < this.subRequests.size &&
+                deserializedSubResponses[contentId] === undefined) {
+                deserializedSubResponse._request = this.subRequests.get(contentId);
+                deserializedSubResponses[contentId] = deserializedSubResponse;
+            }
+            else {
+                logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);
+            }
+            if (subRespFailed) {
+                subResponsesFailedCount++;
+            }
+            else {
+                subResponsesSucceededCount++;
+            }
+        }
+        return {
+            subResponses: deserializedSubResponses,
+            subResponsesSucceededCount: subResponsesSucceededCount,
+            subResponsesFailedCount: subResponsesFailedCount
+        };
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+var MutexLockStatus;
+(function (MutexLockStatus) {
+    MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
+    MutexLockStatus[MutexLockStatus["UNLOCKED"] = 1] = "UNLOCKED";
+})(MutexLockStatus || (MutexLockStatus = {}));
+/**
+ * An async mutex lock.
+ */
+class Mutex {
     /**
-     * Creates an instance of BlobLeaseClient.
-     * @param {(ContainerClient | BlobClient)} client The client to make the lease operation requests.
-     * @param {string} leaseId Initial proposed lease id.
-     * @memberof BlobLeaseClient
+     * Lock for a specific key. If the lock has been acquired by another customer, then
+     * will wait until getting the lock.
+     *
+     * @param key - lock key
      */
-    function BlobLeaseClient(client, leaseId) {
-        var clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
-        this._url = client.url;
-        if (client instanceof ContainerClient) {
-            this._isContainer = true;
-            this._containerOrBlobOperation = new Container(clientContext);
+    static async lock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {
+                this.keys[key] = MutexLockStatus.LOCKED;
+                resolve();
+            }
+            else {
+                this.onUnlockEvent(key, () => {
+                    this.keys[key] = MutexLockStatus.LOCKED;
+                    resolve();
+                });
+            }
+        });
+    }
+    /**
+     * Unlock a key.
+     *
+     * @param key -
+     */
+    static async unlock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === MutexLockStatus.LOCKED) {
+                this.emitUnlockEvent(key);
+            }
+            delete this.keys[key];
+            resolve();
+        });
+    }
+    static onUnlockEvent(key, handler) {
+        if (this.listeners[key] === undefined) {
+            this.listeners[key] = [handler];
         }
         else {
-            this._isContainer = false;
-            this._containerOrBlobOperation = new Blob$1(clientContext);
+            this.listeners[key].push(handler);
         }
-        if (!leaseId) {
-            leaseId = coreHttp.generateUuid();
-        }
-        this._leaseId = leaseId;
     }
-    Object.defineProperty(BlobLeaseClient.prototype, "leaseId", {
-        /**
-         * Gets the lease Id.
-         *
-         * @readonly
-         * @memberof BlobLeaseClient
-         * @type {string}
-         */
-        get: function () {
-            return this._leaseId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobLeaseClient.prototype, "url", {
-        /**
-         * Gets the url.
-         *
-         * @readonly
-         * @memberof BlobLeaseClient
-         * @type {string}
-         */
-        get: function () {
-            return this._url;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    /**
-     * Establishes and manages a lock on a container for delete operations, or on a blob
-     * for write and delete operations.
-     * The lock duration can be 15 to 60 seconds, or can be infinite.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {number} duration Must be between 15 to 60 seconds, or infinite (-1)
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for acquire lease operation.
-     * @memberof BlobLeaseClient
-     */
-    BlobLeaseClient.prototype.acquireLease = function (duration, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_45;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-acquireLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.acquireLease({
-                                abortSignal: options.abortSignal,
-                                duration: duration,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                proposedLeaseId: this._leaseId,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_45 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_45.message
-                        });
-                        throw e_45;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    static emitUnlockEvent(key) {
+        if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
+            const handler = this.listeners[key].shift();
+            setImmediate(() => {
+                handler.call(this);
             });
-        });
-    };
+        }
+    }
+}
+Mutex.keys = {};
+Mutex.listeners = {};
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A BlobBatch represents an aggregated set of operations on blobs.
+ * Currently, only `delete` and `setAccessTier` are supported.
+ */
+class BlobBatch {
+    constructor() {
+        this.batch = "batch";
+        this.batchRequest = new InnerBatchRequest();
+    }
     /**
-     * To change the ID of the lease.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {string} proposedLeaseId the proposed new lease Id.
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for change lease operation.
-     * @memberof BlobLeaseClient
+     * Get the value of Content-Type for a batch request.
+     * The value must be multipart/mixed with a batch boundary.
+     * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
      */
-    BlobLeaseClient.prototype.changeLease = function (proposedLeaseId, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, response, e_46;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-changeLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _h.sent();
-                        this._leaseId = proposedLeaseId;
-                        return [2 /*return*/, response];
-                    case 3:
-                        e_46 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_46.message
-                        });
-                        throw e_46;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    getMultiPartContentType() {
+        return this.batchRequest.getMultipartContentType();
+    }
     /**
-     * To free the lease if it is no longer needed so that another client may
-     * immediately acquire a lease against the container or the blob.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for release lease operation.
-     * @memberof BlobLeaseClient
+     * Get assembled HTTP request body for sub requests.
      */
-    BlobLeaseClient.prototype.releaseLease = function (options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_47;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-releaseLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.releaseLease(this._leaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_47 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_47.message
-                        });
-                        throw e_47;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    getHttpRequestBody() {
+        return this.batchRequest.getHttpRequestBody();
+    }
     /**
-     * To renew the lease.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {LeaseOperationOptions} [options={}] Optional option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for renew lease operation.
-     * @memberof BlobLeaseClient
+     * Get sub requests that are added into the batch request.
      */
-    BlobLeaseClient.prototype.renewLease = function (options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_48;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-renewLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.renewLease(this._leaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_48 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_48.message
-                        });
-                        throw e_48;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    getSubRequests() {
+        return this.batchRequest.getSubRequests();
+    }
+    async addSubRequestInternal(subRequest, assembleSubRequestFunc) {
+        await Mutex.lock(this.batch);
+        try {
+            this.batchRequest.preAddSubRequest(subRequest);
+            await assembleSubRequestFunc();
+            this.batchRequest.postAddSubRequest(subRequest);
+        }
+        finally {
+            await Mutex.unlock(this.batch);
+        }
+    }
+    setBatchType(batchType) {
+        if (!this.batchType) {
+            this.batchType = batchType;
+        }
+        if (this.batchType !== batchType) {
+            throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);
+        }
+    }
+    async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {
+        let url;
+        let credential;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
+                credentialOrOptions instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrOptions))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            options = credentialOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchDeleteRequest-addSubRequest", options);
+        try {
+            this.setBatchType("delete");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
+        let url;
+        let credential;
+        let tier;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
+                credentialOrTier instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrTier))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrTier;
+            tier = tierOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            tier = credentialOrTier;
+            options = tierOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchSetTierRequest-addSubRequest", options);
+        try {
+            this.setBatchType("setAccessTier");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);
+            });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+/**
+ * Inner batch request class which is responsible for assembling and serializing sub requests.
+ * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
+ */
+class InnerBatchRequest {
+    constructor() {
+        this.operationCount = 0;
+        this.body = "";
+        const tempGuid = coreHttp.generateUuid();
+        // batch_{batchid}
+        this.boundary = `batch_${tempGuid}`;
+        // --batch_{batchid}
+        // Content-Type: application/http
+        // Content-Transfer-Encoding: binary
+        this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;
+        // multipart/mixed; boundary=batch_{batchid}
+        this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;
+        // --batch_{batchid}--
+        this.batchRequestEnding = `--${this.boundary}--`;
+        this.subRequests = new Map();
+    }
     /**
-     * To end the lease but ensure that another client cannot acquire a new lease
-     * until the current lease period has expired.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @static
-     * @param {number} breakPeriod Break period
-     * @param {LeaseOperationOptions} [options={}] Optional options to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for break lease operation.
-     * @memberof BlobLeaseClient
+     * Create pipeline to assemble sub requests. The idea here is to use existing
+     * credential and serialization/deserialization components, with additional policies to
+     * filter unnecessary headers, assemble sub requests into request's body
+     * and intercept request from going to wire.
+     * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
      */
-    BlobLeaseClient.prototype.breakLease = function (breakPeriod, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, operationOptions, e_49;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-breakLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        operationOptions = {
-                            abortSignal: options.abortSignal,
-                            breakPeriod: breakPeriod,
-                            modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                            spanOptions: spanOptions
-                        };
-                        return [4 /*yield*/, this._containerOrBlobOperation.breakLease(operationOptions)];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_49 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_49.message
-                        });
-                        throw e_49;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    createPipeline(credential) {
+        const isAnonymousCreds = credential instanceof AnonymousCredential;
+        const policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
+        const factories = new Array(policyFactoryLength);
+        factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
+        factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
+        if (!isAnonymousCreds) {
+            factories[2] = coreHttp.isTokenCredential(credential)
+                ? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
+                : credential;
+        }
+        factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
+        return new Pipeline(factories, {});
+    }
+    appendSubRequestToBody(request) {
+        // Start to assemble sub request
+        this.body += [
+            this.subRequestPrefix,
+            `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`,
+            "",
+            `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}` // sub request start line with method
+        ].join(HTTP_LINE_ENDING);
+        for (const header of request.headers.headersArray()) {
+            this.body += `${header.name}: ${header.value}${HTTP_LINE_ENDING}`;
+        }
+        this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
+        // No body to assemble for current batch request support
+        // End to assemble sub request
+    }
+    preAddSubRequest(subRequest) {
+        if (this.operationCount >= BATCH_MAX_REQUEST) {
+            throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);
+        }
+        // Fast fail if url for sub request is invalid
+        const path = getURLPath(subRequest.url);
+        if (!path || path === "") {
+            throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);
+        }
+    }
+    postAddSubRequest(subRequest) {
+        this.subRequests.set(this.operationCount, subRequest);
+        this.operationCount++;
+    }
+    // Return the http request body with assembling the ending line to the sub request body.
+    getHttpRequestBody() {
+        return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;
+    }
+    getMultipartContentType() {
+        return this.multipartContentType;
+    }
+    getSubRequests() {
+        return this.subRequests;
+    }
+}
+class BatchRequestAssemblePolicy extends coreHttp.BaseRequestPolicy {
+    constructor(batchRequest, nextPolicy, options) {
+        super(nextPolicy, options);
+        this.dummyResponse = {
+            request: new coreHttp.WebResource(),
+            status: 200,
+            headers: new coreHttp.HttpHeaders()
+        };
+        this.batchRequest = batchRequest;
+    }
+    async sendRequest(request) {
+        await this.batchRequest.appendSubRequestToBody(request);
+        return this.dummyResponse; // Intercept request from going to wire
+    }
+}
+class BatchRequestAssemblePolicyFactory {
+    constructor(batchRequest) {
+        this.batchRequest = batchRequest;
+    }
+    create(nextPolicy, options) {
+        return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
+    }
+}
+class BatchHeaderFilterPolicy extends coreHttp.BaseRequestPolicy {
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
+    }
+    async sendRequest(request) {
+        let xMsHeaderName = "";
+        for (const header of request.headers.headersArray()) {
+            if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
+                xMsHeaderName = header.name;
+            }
+        }
+        if (xMsHeaderName !== "") {
+            request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+class BatchHeaderFilterPolicyFactory {
+    create(nextPolicy, options) {
+        return new BatchHeaderFilterPolicy(nextPolicy, options);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.
+ *
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
+ */
+class BlobBatchClient {
+    constructor(url, credentialOrPipeline, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        if (isPipelineLike(credentialOrPipeline)) {
+            pipeline = credentialOrPipeline;
+        }
+        else if (!credentialOrPipeline) {
+            // no credential provided
+            pipeline = newPipeline(new AnonymousCredential(), options);
+        }
+        else {
+            pipeline = newPipeline(credentialOrPipeline, options);
+        }
+        const storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
+        const path = getURLPath(url);
+        if (path && path !== "/") {
+            // Container scoped.
+            this.serviceOrContainerContext = new Container(storageClientContext);
+        }
+        else {
+            this.serviceOrContainerContext = new Service(storageClientContext);
+        }
+    }
+    /**
+     * Creates a {@link BlobBatch}.
+     * A BlobBatch represents an aggregated set of operations on blobs.
+     */
+    createBatch() {
+        return new BlobBatch();
+    }
+    async deleteBlobs(urlsOrBlobClients, credentialOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);
+            }
+            else {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);
+            }
+            else {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    /**
+     * Submit batch request which consists of multiple subrequests.
+     *
+     * Get `blobBatchClient` and other details before running the snippets.
+     * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`
+     *
+     * Example usage:
+     *
+     * ```js
+     * let batchRequest = new BlobBatch();
+     * await batchRequest.deleteBlob(urlInString0, credential0);
+     * await batchRequest.deleteBlob(urlInString1, credential1, {
+     *  deleteSnapshots: "include"
+     * });
+     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
+     * console.log(batchResp.subResponsesSucceededCount);
+     * ```
+     *
+     * Example using a lease:
+     *
+     * ```js
+     * let batchRequest = new BlobBatch();
+     * await batchRequest.setBlobAccessTier(blockBlobClient0, "Cool");
+     * await batchRequest.setBlobAccessTier(blockBlobClient1, "Cool", {
+     *  conditions: { leaseId: leaseId }
+     * });
+     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
+     * console.log(batchResp.subResponsesSucceededCount);
+     * ```
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
+     *
+     * @param batchRequest - A set of Delete or SetTier operations.
+     * @param options -
+     */
+    async submitBatch(batchRequest, options = {}) {
+        if (!batchRequest || batchRequest.getSubRequests().size === 0) {
+            throw new RangeError("Batch request should contain one or more sub requests.");
+        }
+        const { span, updatedOptions } = createSpan("BlobBatchClient-submitBatch", options);
+        try {
+            const batchRequestBody = batchRequest.getHttpRequestBody();
+            // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.
+            const rawBatchResponse = await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).
+            const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
+            const responseSummary = await batchResponseParser.parseBatchResponse();
+            const res = {
+                _response: rawBatchResponse._response,
+                contentType: rawBatchResponse.contentType,
+                errorCode: rawBatchResponse.errorCode,
+                requestId: rawBatchResponse.requestId,
+                clientRequestId: rawBatchResponse.clientRequestId,
+                version: rawBatchResponse.version,
+                subResponses: responseSummary.subResponses,
+                subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
+                subResponsesFailedCount: responseSummary.subResponsesFailedCount
+            };
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobLeaseClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
 /**
  * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
- *
- * @export
- * @class ContainerClient
  */
-var ContainerClient = /** @class */ (function (_super) {
-    tslib.__extends(ContainerClient, _super);
-    function ContainerClient(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
-        var _this = this;
-        var pipeline;
-        var url;
+class ContainerClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -29593,11 +31057,11 @@ var ContainerClient = /** @class */ (function (_super) {
         else if (credentialOrPipelineOrContainerName &&
             typeof credentialOrPipelineOrContainerName === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -29617,29 +31081,23 @@ var ContainerClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName parameter");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this._containerName = _this.getContainerNameFromUrl();
-        _this.containerContext = new Container(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this._containerName = this.getContainerNameFromUrl();
+        this.containerContext = new Container(this.storageClientContext);
+    }
+    /**
+     * The name of the container.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(ContainerClient.prototype, "containerName", {
-        /**
-         * The name of the container.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, the operation fails.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
      *
-     * @param {ContainerCreateOptions} [options] Options to Container Create operation.
-     * @returns {Promise<ContainerCreateResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Create operation.
+     *
      *
      * Example usage:
      *
@@ -29649,85 +31107,57 @@ var ContainerClient = /** @class */ (function (_super) {
      * console.log("Container was created successfully", createContainerResponse.requestId);
      * ```
      */
-    ContainerClient.prototype.create = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_50;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-create", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.create(tslib.__assign(tslib.__assign({}, options), { spanOptions: spanOptions }))];
-                    case 2: 
-                    // Spread operator in destructuring assignments,
-                    // this will filter out unwanted properties from the response object into result object
-                    return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_50 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_50.message
-                        });
-                        throw e_50;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-create", options);
+        try {
+            // Spread operator in destructuring assignments,
+            // this will filter out unwanted properties from the response object into result object
+            return await this.containerContext.create(Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, it is not changed.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
      *
-     * @param {ContainerCreateOptions} [options]
-     * @returns {Promise<ContainerCreateIfNotExistsResponse>}
-     * @memberof ContainerClient
+     * @param options -
      */
-    ContainerClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_51;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_51 = _d.sent();
-                        if (((_a = e_51.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a container only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_51.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_51.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_51.message
-                        });
-                        throw e_51;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-createIfNotExists", options);
+        try {
+            const res = await this.create(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a container only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure container resource represented by this client exists; false otherwise.
      *
@@ -29735,76 +31165,57 @@ var ContainerClient = /** @class */ (function (_super) {
      * applications. Vice versa new containers with the same name might be added by other clients or
      * applications after this function completes.
      *
-     * @param {ContainerExistsOptions} [options={}]
-     * @returns {Promise<boolean>}
-     * @memberof ContainerClient
+     * @param options -
      */
-    ContainerClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_52;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-exists", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_52 = _b.sent();
-                        if (e_52.statusCode === 404) {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when checking container existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_52.message
-                        });
-                        throw e_52;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-exists", options);
+        try {
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking container existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a {@link BlobClient}
      *
-     * @param {string} blobName A blob name
-     * @returns {BlobClient} A new BlobClient object for the given blob name.
-     * @memberof ContainerClient
+     * @param blobName - A blob name
+     * @returns A new BlobClient object for the given blob name.
      */
-    ContainerClient.prototype.getBlobClient = function (blobName) {
+    getBlobClient(blobName) {
         return new BlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates an {@link AppendBlobClient}
      *
-     * @param {string} blobName An append blob name
-     * @returns {AppendBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - An append blob name
      */
-    ContainerClient.prototype.getAppendBlobClient = function (blobName) {
+    getAppendBlobClient(blobName) {
         return new AppendBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link BlockBlobClient}
      *
-     * @param {string} blobName A block blob name
-     * @returns {BlockBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - A block blob name
+     *
      *
      * Example usage:
      *
@@ -29815,19 +31226,17 @@ var ContainerClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    ContainerClient.prototype.getBlockBlobClient = function (blobName) {
+    getBlockBlobClient(blobName) {
         return new BlockBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link PageBlobClient}
      *
-     * @param {string} blobName A page blob name
-     * @returns {PageBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - A page blob name
      */
-    ContainerClient.prototype.getPageBlobClient = function (blobName) {
+    getPageBlobClient(blobName) {
         return new PageBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Returns all user-defined metadata and system properties for the specified
      * container. The data returned does not include the container's list of blobs.
@@ -29838,134 +31247,86 @@ var ContainerClient = /** @class */ (function (_super) {
      * the `listContainers` method of {@link BlobServiceClient} using the `includeMetadata` option, which
      * will retain their original casing.
      *
-     * @param {ContainerGetPropertiesOptions} [options] Options to Container Get Properties operation.
-     * @returns {Promise<ContainerGetPropertiesResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Get Properties operation.
      */
-    ContainerClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_53;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getProperties(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal }, options.conditions), { spanOptions: spanOptions }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_53 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_53.message
-                        });
-                        throw e_53;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getProperties", options);
+        try {
+            return await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion. The container and any blobs
      * contained within it are later deleted during garbage collection.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
      *
-     * @param {ContainerDeleteMethodOptions} [options] Options to Container Delete operation.
-     * @returns {Promise<ContainerDeleteResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.delete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_54;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-delete", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.deleteMethod({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_54 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_54.message
-                        });
-                        throw e_54;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async delete(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-delete", options);
+        try {
+            return await this.containerContext.delete(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion if it exists. The container and any blobs
      * contained within it are later deleted during garbage collection.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
      *
-     * @param {ContainerDeleteMethodOptions} [options] Options to Container Delete operation.
-     * @returns {Promise<ContainerDeleteIfExistsResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_55;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-deleteIfExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_55 = _d.sent();
-                        if (((_a = e_55.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when deleting a container only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_55.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_55.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_55.message
-                        });
-                        throw e_55;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a container only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets one or more user-defined name-value pairs for the specified container.
      *
@@ -29974,52 +31335,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata
      *
-     * @param {Metadata} [metadata] Replace existing metadata with this value.
+     * @param metadata - Replace existing metadata with this value.
      *                            If no value provided the existing metadata will be removed.
-     * @param {ContainerSetMetadataOptions} [options] Options to Container Set Metadata operation.
-     * @returns {Promise<ContainerSetMetadataResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Set Metadata operation.
      */
-    ContainerClient.prototype.setMetadata = function (metadata, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_56;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (options.conditions.ifUnmodifiedSince) {
-                            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
-                        }
-                        _a = createSpan("ContainerClient-setMetadata", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.setMetadata({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: metadata,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_56 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_56.message
-                        });
-                        throw e_56;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setMetadata(metadata, options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        if (options.conditions.ifUnmodifiedSince) {
+            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-setMetadata", options);
+        try {
+            return await this.containerContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the permissions for the specified container. The permissions indicate
      * whether container data may be accessed publicly.
@@ -30029,78 +31370,58 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-acl
      *
-     * @param {ContainerGetAccessPolicyOptions} [options] Options to Container Get Access Policy operation.
-     * @returns {Promise<ContainerGetAccessPolicyResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Get Access Policy operation.
      */
-    ContainerClient.prototype.getAccessPolicy = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, res, _i, response_1, identifier, accessPolicy, e_57;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getAccessPolicy", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getAccessPolicy({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _b.sent();
-                        res = {
-                            _response: response._response,
-                            blobPublicAccess: response.blobPublicAccess,
-                            date: response.date,
-                            etag: response.etag,
-                            errorCode: response.errorCode,
-                            lastModified: response.lastModified,
-                            requestId: response.requestId,
-                            clientRequestId: response.clientRequestId,
-                            signedIdentifiers: [],
-                            version: response.version
-                        };
-                        for (_i = 0, response_1 = response; _i < response_1.length; _i++) {
-                            identifier = response_1[_i];
-                            accessPolicy = undefined;
-                            if (identifier.accessPolicy) {
-                                accessPolicy = {
-                                    permissions: identifier.accessPolicy.permissions
-                                };
-                                if (identifier.accessPolicy.expiresOn) {
-                                    accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
-                                }
-                                if (identifier.accessPolicy.startsOn) {
-                                    accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
-                                }
-                            }
-                            res.signedIdentifiers.push({
-                                accessPolicy: accessPolicy,
-                                id: identifier.id
-                            });
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_57 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_57.message
-                        });
-                        throw e_57;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
+    async getAccessPolicy(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getAccessPolicy", options);
+        try {
+            const response = await this.containerContext.getAccessPolicy(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const res = {
+                _response: response._response,
+                blobPublicAccess: response.blobPublicAccess,
+                date: response.date,
+                etag: response.etag,
+                errorCode: response.errorCode,
+                lastModified: response.lastModified,
+                requestId: response.requestId,
+                clientRequestId: response.clientRequestId,
+                signedIdentifiers: [],
+                version: response.version
+            };
+            for (const identifier of response) {
+                let accessPolicy = undefined;
+                if (identifier.accessPolicy) {
+                    accessPolicy = {
+                        permissions: identifier.accessPolicy.permissions
+                    };
+                    if (identifier.accessPolicy.expiresOn) {
+                        accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
+                    }
+                    if (identifier.accessPolicy.startsOn) {
+                        accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
+                    }
                 }
+                res.signedIdentifiers.push({
+                    accessPolicy,
+                    id: identifier.id
+                });
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the permissions for the specified container. The permissions indicate
      * whether blobs in a container may be accessed publicly.
@@ -30114,74 +31435,51 @@ var ContainerClient = /** @class */ (function (_super) {
      * fail with status code 403 (Forbidden), until the access policy becomes active.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-acl
      *
-     * @param {PublicAccessType} [access] The level of public access to data in the container.
-     * @param {SignedIdentifier[]} [containerAcl] Array of elements each having a unique Id and details of the access policy.
-     * @param {ContainerSetAccessPolicyOptions} [options] Options to Container Set Access Policy operation.
-     * @returns {Promise<ContainerSetAccessPolicyResponse>}
-     * @memberof ContainerClient
+     * @param access - The level of public access to data in the container.
+     * @param containerAcl - Array of elements each having a unique Id and details of the access policy.
+     * @param options - Options to Container Set Access Policy operation.
      */
-    ContainerClient.prototype.setAccessPolicy = function (access, containerAcl, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, acl, _i, _b, identifier, e_58;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _a = createSpan("ContainerClient-setAccessPolicy", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        acl = [];
-                        for (_i = 0, _b = containerAcl || []; _i < _b.length; _i++) {
-                            identifier = _b[_i];
-                            acl.push({
-                                accessPolicy: {
-                                    expiresOn: identifier.accessPolicy.expiresOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
-                                        : "",
-                                    permissions: identifier.accessPolicy.permissions,
-                                    startsOn: identifier.accessPolicy.startsOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
-                                        : ""
-                                },
-                                id: identifier.id
-                            });
-                        }
-                        return [4 /*yield*/, this.containerContext.setAccessPolicy({
-                                abortSignal: options.abortSignal,
-                                access: access,
-                                containerAcl: acl,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_58 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_58.message
-                        });
-                        throw e_58;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setAccessPolicy(access, containerAcl, options = {}) {
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("ContainerClient-setAccessPolicy", options);
+        try {
+            const acl = [];
+            for (const identifier of containerAcl || []) {
+                acl.push({
+                    accessPolicy: {
+                        expiresOn: identifier.accessPolicy.expiresOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
+                            : "",
+                        permissions: identifier.accessPolicy.permissions,
+                        startsOn: identifier.accessPolicy.startsOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
+                            : ""
+                    },
+                    id: identifier.id
+                });
+            }
+            return await this.containerContext.setAccessPolicy(Object.assign({ abortSignal: options.abortSignal, access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the container.
      *
-     * @param {string} [proposeLeaseId] Initial proposed lease Id.
-     * @returns {BlobLeaseClient} A new BlobLeaseClient object for managing leases on the container.
-     * @memberof ContainerClient
+     * @param proposeLeaseId - Initial proposed lease Id.
+     * @returns A new BlobLeaseClient object for managing leases on the container.
      */
-    ContainerClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      *
@@ -30196,49 +31494,35 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {string} blobName Name of the block blob to create or update.
-     * @param {HttpRequestBody} body Blob, string, ArrayBuffer, ArrayBufferView or a function
+     * @param blobName - Name of the block blob to create or update.
+     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
      *                               which returns a new Readable stream whose offset is from data source beginning.
-     * @param {number} contentLength Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
+     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
      *                               string including non non-Base64/Hex-encoded characters.
-     * @param {BlockBlobUploadOptions} [options] Options to configure the Block Blob Upload operation.
-     * @returns {Promise<{ blockBlobClient: BlockBlobClient; response: BlockBlobUploadResponse }>} Block Blob upload response data and the corresponding BlockBlobClient instance.
-     * @memberof ContainerClient
+     * @param options - Options to configure the Block Blob Upload operation.
+     * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.
      */
-    ContainerClient.prototype.uploadBlockBlob = function (blobName, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blockBlobClient, response, e_59;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-uploadBlockBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blockBlobClient = this.getBlockBlobClient(blobName);
-                        return [4 /*yield*/, blockBlobClient.upload(body, contentLength, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        return [2 /*return*/, {
-                                blockBlobClient: blockBlobClient,
-                                response: response
-                            }];
-                    case 3:
-                        e_59 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_59.message
-                        });
-                        throw e_59;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBlockBlob(blobName, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-uploadBlockBlob", options);
+        try {
+            const blockBlobClient = this.getBlockBlobClient(blobName);
+            const response = await blockBlobClient.upload(body, contentLength, updatedOptions);
+            return {
+                blockBlobClient,
+                response
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -30246,43 +31530,30 @@ var ContainerClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {string} blobName
-     * @param {ContainerDeleteBlobOptions} [options] Options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteResponse>} Block blob deletion response data.
-     * @memberof ContainerClient
+     * @param blobName -
+     * @param options - Options to Blob Delete operation.
+     * @returns Block blob deletion response data.
      */
-    ContainerClient.prototype.deleteBlob = function (blobName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blobClient, e_60;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-deleteBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blobClient = this.getBlobClient(blobName);
-                        if (options.versionId) {
-                            blobClient = blobClient.withVersion(options.versionId);
-                        }
-                        return [4 /*yield*/, blobClient.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_60 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_60.message
-                        });
-                        throw e_60;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteBlob(blobName, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteBlob", options);
+        try {
+            let blobClient = this.getBlobClient(blobName);
+            if (options.versionId) {
+                blobClient = blobClient.withVersion(options.versionId);
+            }
+            return await blobClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobFlatSegment returns a single segment of blobs starting from the
      * specified Marker. Use an empty Marker to start enumeration from the beginning.
@@ -30290,45 +31561,30 @@ var ContainerClient = /** @class */ (function (_super) {
      * (passing the the previously-returned Marker) to get the next segment.
      * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
      *
-     * @param {string} [marker] A string value that identifies the portion of the list to be returned with the next list operation.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to Container List Blob Flat Segment operation.
-     * @returns {Promise<ContainerListBlobFlatSegmentResponse>}
-     * @memberof ContainerClient
+     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
+     * @param options - Options to Container List Blob Flat Segment operation.
      */
-    ContainerClient.prototype.listBlobFlatSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, wrappedResponse, e_61;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobFlatSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobFlatSegment(tslib.__assign(tslib.__assign({ marker: marker }, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_61 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_61.message
-                        });
-                        throw e_61;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobFlatSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobFlatSegment", options);
+        try {
+            const response = await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobHierarchySegment returns a single segment of blobs starting from
      * the specified Marker. Use an empty Marker to start enumeration from the
@@ -30336,139 +31592,79 @@ var ContainerClient = /** @class */ (function (_super) {
      * again (passing the the previously-returned Marker) to get the next segment.
      * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
      *
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {string} [marker] A string value that identifies the portion of the list to be returned with the next list operation.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to Container List Blob Hierarchy Segment operation.
-     * @returns {Promise<ContainerListBlobHierarchySegmentResponse>}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
+     * @param options - Options to Container List Blob Hierarchy Segment operation.
      */
-    ContainerClient.prototype.listBlobHierarchySegment = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, wrappedResponse, e_62;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobHierarchySegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobHierarchySegment(delimiter, tslib.__assign(tslib.__assign({ marker: marker }, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_62 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_62.message
-                        });
-                        throw e_62;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobHierarchySegment(delimiter, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobHierarchySegment", options);
+        try {
+            const response = await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse
      *
-     * @private
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
      *                          operation returns the ContinuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
      *                          with the current page. The ContinuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<ContainerListBlobFlatSegmentResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listBlobsFlatSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobFlatSegment(marker, options))];
-                    case 2:
-                        listBlobsFlatSegmentResponse = _a.sent();
-                        marker = listBlobsFlatSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsFlatSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listBlobsFlatSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsFlatSegmentResponse = yield tslib.__await(this.listBlobFlatSegment(marker, options));
+                    marker = listBlobsFlatSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsFlatSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator of {@link BlobItem} objects
      *
-     * @private
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<BlobItem>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, listBlobsFlatSegmentResponse, e_63_1;
-            var e_63, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        listBlobsFlatSegmentResponse = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_63_1 = _d.sent();
-                        e_63 = { error: e_63_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_63) throw e_63.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsFlatSegmentResponse = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs
      * under the specified account.
@@ -30536,15 +31732,11 @@ var ContainerClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {ContainerListBlobsOptions} [options={}] Options to list blobs.
-     * @returns {PagedAsyncIterableIterator<BlobItem, ContainerListBlobFlatSegmentResponse>} An asyncIterableIterator that supports paging.
-     * @memberof ContainerClient
+     * @param options - Options to list blobs.
+     * @returns An asyncIterableIterator that supports paging.
      */
-    ContainerClient.prototype.listBlobsFlat = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
-        var include = [];
+    listBlobsFlat(options = {}) {
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -30566,154 +31758,100 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.includeTags) {
             include.push("tags");
         }
+        if (options.includeDeletedWithVersions) {
+            include.push("deletedwithversions");
+        }
+        if (options.includeImmutabilityPolicy) {
+            include.push("immutabilitypolicy");
+        }
+        if (options.includeLegalHold) {
+            include.push("legalhold");
+        }
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blobs
-        var iter = this.listItems(updatedOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const iter = this.listItems(updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse
      *
-     * @private
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
      *                          operation returns the ContinuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
      *                          with the current page. The ContinuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<ContainerListBlobHierarchySegmentResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listHierarchySegments = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listHierarchySegments_1() {
-            var listBlobsHierarchySegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options))];
-                    case 2:
-                        listBlobsHierarchySegmentResponse = _a.sent();
-                        marker = listBlobsHierarchySegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsHierarchySegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listHierarchySegments(delimiter, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listHierarchySegments_1() {
+            let listBlobsHierarchySegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsHierarchySegmentResponse = yield tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options));
+                    marker = listBlobsHierarchySegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsHierarchySegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.
      *
-     * @private
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<{ kind: "prefix" } & BlobPrefix | { kind: "blob" } & BlobItem>}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItemsByHierarchy = function (delimiter, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItemsByHierarchy_1() {
-            var marker, _a, _b, listBlobsHierarchySegmentResponse, segment, _i, _c, prefix, _d, _e, blob, e_64_1;
-            var e_64, _f;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        _g.trys.push([0, 14, 15, 20]);
-                        _a = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options));
-                        _g.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _g.sent(), !_b.done)) return [3 /*break*/, 13];
-                        listBlobsHierarchySegmentResponse = _b.value;
-                        segment = listBlobsHierarchySegmentResponse.segment;
-                        if (!segment.blobPrefixes) return [3 /*break*/, 7];
-                        _i = 0, _c = segment.blobPrefixes;
-                        _g.label = 3;
-                    case 3:
-                        if (!(_i < _c.length)) return [3 /*break*/, 7];
-                        prefix = _c[_i];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "prefix" }, prefix))];
-                    case 4: return [4 /*yield*/, _g.sent()];
-                    case 5:
-                        _g.sent();
-                        _g.label = 6;
-                    case 6:
-                        _i++;
-                        return [3 /*break*/, 3];
-                    case 7:
-                        _d = 0, _e = segment.blobItems;
-                        _g.label = 8;
-                    case 8:
-                        if (!(_d < _e.length)) return [3 /*break*/, 12];
-                        blob = _e[_d];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "blob" }, blob))];
-                    case 9: return [4 /*yield*/, _g.sent()];
-                    case 10:
-                        _g.sent();
-                        _g.label = 11;
-                    case 11:
-                        _d++;
-                        return [3 /*break*/, 8];
-                    case 12: return [3 /*break*/, 1];
-                    case 13: return [3 /*break*/, 20];
-                    case 14:
-                        e_64_1 = _g.sent();
-                        e_64 = { error: e_64_1 };
-                        return [3 /*break*/, 20];
-                    case 15:
-                        _g.trys.push([15, , 18, 19]);
-                        if (!(_b && !_b.done && (_f = _a.return))) return [3 /*break*/, 17];
-                        return [4 /*yield*/, tslib.__await(_f.call(_a))];
-                    case 16:
-                        _g.sent();
-                        _g.label = 17;
-                    case 17: return [3 /*break*/, 19];
-                    case 18:
-                        if (e_64) throw e_64.error;
-                        return [7 /*endfinally*/];
-                    case 19: return [7 /*endfinally*/];
-                    case 20: return [2 /*return*/];
+    listItemsByHierarchy(delimiter, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItemsByHierarchy_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsHierarchySegmentResponse = _c.value;
+                    const segment = listBlobsHierarchySegmentResponse.segment;
+                    if (segment.blobPrefixes) {
+                        for (const prefix of segment.blobPrefixes) {
+                            yield yield tslib.__await(Object.assign({ kind: "prefix" }, prefix));
+                        }
+                    }
+                    for (const blob of segment.blobItems) {
+                        yield yield tslib.__await(Object.assign({ kind: "blob" }, blob));
+                    }
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs by hierarchy.
      * under the specified account.
@@ -30746,7 +31884,7 @@ var ContainerClient = /** @class */ (function (_super) {
      *   }
      *   entity = await iter.next();
      * }
-     * ```js
+     * ```
      *
      * Example using `byPage()`:
      *
@@ -30787,22 +31925,14 @@ var ContainerClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {ContainerListBlobsOptions} [options={}] Options to list blobs operation.
-     * @returns {(PagedAsyncIterableIterator<
-     *   { kind: "prefix" } & BlobPrefix | { kind: "blob" } & BlobItem,
-     *     ContainerListBlobHierarchySegmentResponse
-     *   >)}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listBlobsByHierarchy = function (delimiter, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listBlobsByHierarchy(delimiter, options = {}) {
         if (delimiter === "") {
             throw new RangeError("delimiter should contain one or more characters");
         }
-        var include = [];
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -30824,48 +31954,51 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.includeTags) {
             include.push("tags");
         }
+        if (options.includeDeletedWithVersions) {
+            include.push("deletedwithversions");
+        }
+        if (options.includeImmutabilityPolicy) {
+            include.push("immutabilitypolicy");
+        }
+        if (options.includeLegalHold) {
+            include.push("legalhold");
+        }
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blob prefixes and blobs
-        var iter = this.listItemsByHierarchy(delimiter, updatedOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return tslib.__awaiter(this, void 0, void 0, function () {
-                        return tslib.__generator(this, function (_a) {
-                            return [2 /*return*/, iter.next()];
-                        });
-                    });
-                }
+        const iter = this.listItemsByHierarchy(delimiter, updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            async next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listHierarchySegments(delimiter, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
-    ContainerClient.prototype.getContainerNameFromUrl = function () {
-        var containerName;
+            byPage: (settings = {}) => {
+                return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
+    getContainerNameFromUrl() {
+        let containerName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer?sasString";
             // "https://myaccount.blob.core.windows.net/mycontainer";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`
             // http://localhost:10001/devstoreaccount1/containername
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername".
                 // "https://customdomain.com/containername".
@@ -30893,784 +32026,473 @@ var ContainerClient = /** @class */ (function (_super) {
         catch (error) {
             throw new Error("Unable to extract containerName with provided information.");
         }
-    };
-    return ContainerClient;
-}(StorageClient));
-
-function getBodyAsText(batchResponse) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var buffer, responseLength;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
-                    return [4 /*yield*/, streamToBuffer2(batchResponse.readableStreamBody, buffer)];
-                case 1:
-                    responseLength = _a.sent();
-                    // Slice the buffer to trim the empty ending.
-                    buffer = buffer.slice(0, responseLength);
-                    return [2 /*return*/, buffer.toString()];
+    }
+    /**
+     * Only available for ContainerClient constructed with a shared key credential.
+     *
+     * Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     * @param options - Optional parameters.
+     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
+     */
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
+                throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    });
-}
-function utf8ByteLength(str) {
-    return Buffer.byteLength(str);
-}
-
-var HTTP_HEADER_DELIMITER = ": ";
-var SPACE_DELIMITER = " ";
-var NOT_FOUND = -1;
-/**
- * Util class for parsing batch response.
- */
-var BatchResponseParser = /** @class */ (function () {
-    function BatchResponseParser(batchResponse, subRequests) {
-        if (!batchResponse || !batchResponse.contentType) {
-            // In special case(reported), server may return invalid content-type which could not be parsed.
-            throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
-        }
-        if (!subRequests || subRequests.size === 0) {
-            // This should be prevent during coding.
-            throw new RangeError("Invalid state: subRequests is not provided or size is 0.");
-        }
-        this.batchResponse = batchResponse;
-        this.subRequests = subRequests;
-        this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
-        this.perResponsePrefix = "--" + this.responseBatchBoundary + HTTP_LINE_ENDING;
-        this.batchResponseEnding = "--" + this.responseBatchBoundary + "--";
-    }
-    // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
-    BatchResponseParser.prototype.parseBatchResponse = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var responseBodyAsText, subResponses, subResponseCount, deserializedSubResponses, subResponsesSucceededCount, subResponsesFailedCount, index, subResponse, deserializedSubResponse, responseLines, subRespHeaderStartFound, subRespHeaderEndFound, subRespFailed, contentId, _i, responseLines_1, responseLine, tokens, tokens;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
-                        // sub request's response.
-                        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
-                            throw new Error("Invalid state: batch request failed with status: '" + this.batchResponse._response.status + "'.");
-                        }
-                        return [4 /*yield*/, getBodyAsText(this.batchResponse)];
-                    case 1:
-                        responseBodyAsText = _a.sent();
-                        subResponses = responseBodyAsText
-                            .split(this.batchResponseEnding)[0] // string after ending is useless
-                            .split(this.perResponsePrefix)
-                            .slice(1);
-                        subResponseCount = subResponses.length;
-                        // Defensive coding in case of potential error parsing.
-                        // Note: subResponseCount == 1 is special case where sub request is invalid.
-                        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
-                        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
-                        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
-                            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
-                        }
-                        deserializedSubResponses = new Array(subResponseCount);
-                        subResponsesSucceededCount = 0;
-                        subResponsesFailedCount = 0;
-                        // Parse sub subResponses.
-                        for (index = 0; index < subResponseCount; index++) {
-                            subResponse = subResponses[index];
-                            deserializedSubResponses[index] = {};
-                            deserializedSubResponse = deserializedSubResponses[index];
-                            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
-                            responseLines = subResponse.split("" + HTTP_LINE_ENDING);
-                            subRespHeaderStartFound = false;
-                            subRespHeaderEndFound = false;
-                            subRespFailed = false;
-                            contentId = NOT_FOUND;
-                            for (_i = 0, responseLines_1 = responseLines; _i < responseLines_1.length; _i++) {
-                                responseLine = responseLines_1[_i];
-                                if (!subRespHeaderStartFound) {
-                                    // Convention line to indicate content ID
-                                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
-                                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
-                                    }
-                                    // Http version line with status code indicates the start of sub request's response.
-                                    // Example: HTTP/1.1 202 Accepted
-                                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
-                                        subRespHeaderStartFound = true;
-                                        tokens = responseLine.split(SPACE_DELIMITER);
-                                        deserializedSubResponse.status = parseInt(tokens[1]);
-                                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
-                                    }
-                                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
-                                }
-                                if (responseLine.trim() === "") {
-                                    // Sub response's header start line already found, and the first empty line indicates header end line found.
-                                    if (!subRespHeaderEndFound) {
-                                        subRespHeaderEndFound = true;
-                                    }
-                                    continue; // Skip empty line
-                                }
-                                // Note: when code reach here, it indicates subRespHeaderStartFound == true
-                                if (!subRespHeaderEndFound) {
-                                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
-                                        // Defensive coding to prevent from missing valuable lines.
-                                        throw new Error("Invalid state: find non-empty line '" + responseLine + "' without HTTP header delimiter '" + HTTP_HEADER_DELIMITER + "'.");
-                                    }
-                                    tokens = responseLine.split(HTTP_HEADER_DELIMITER);
-                                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
-                                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
-                                        deserializedSubResponse.errorCode = tokens[1];
-                                        subRespFailed = true;
-                                    }
-                                }
-                                else {
-                                    // Assemble body of sub response.
-                                    if (!deserializedSubResponse.bodyAsText) {
-                                        deserializedSubResponse.bodyAsText = "";
-                                    }
-                                    deserializedSubResponse.bodyAsText += responseLine;
-                                }
-                            } // Inner for end
-                            if (contentId != NOT_FOUND) {
-                                deserializedSubResponse._request = this.subRequests.get(contentId);
-                            }
-                            if (subRespFailed) {
-                                subResponsesFailedCount++;
-                            }
-                            else {
-                                subResponsesSucceededCount++;
-                            }
-                        }
-                        return [2 /*return*/, {
-                                subResponses: deserializedSubResponses,
-                                subResponsesSucceededCount: subResponsesSucceededCount,
-                                subResponsesFailedCount: subResponsesFailedCount
-                            }];
-                }
-            });
-        });
-    };
-    return BatchResponseParser;
-}());
-
-var MutexLockStatus;
-(function (MutexLockStatus) {
-    MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
-    MutexLockStatus[MutexLockStatus["UNLOCKED"] = 1] = "UNLOCKED";
-})(MutexLockStatus || (MutexLockStatus = {}));
-/**
- * An async mutex lock.
- *
- * @export
- * @class Mutex
- */
-var Mutex = /** @class */ (function () {
-    function Mutex() {
     }
     /**
-     * Lock for a specific key. If the lock has been acquired by another customer, then
-     * will wait until getting the lock.
-     *
-     * @static
-     * @param {string} key lock key
-     * @returns {Promise<void>}
-     * @memberof Mutex
-     */
-    Mutex.lock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === undefined || _this.keys[key] === MutexLockStatus.UNLOCKED) {
-                            _this.keys[key] = MutexLockStatus.LOCKED;
-                            resolve();
-                        }
-                        else {
-                            _this.onUnlockEvent(key, function () {
-                                _this.keys[key] = MutexLockStatus.LOCKED;
-                                resolve();
-                            });
-                        }
-                    })];
-            });
-        });
-    };
-    /**
-     * Unlock a key.
-     *
-     * @static
-     * @param {string} key
-     * @returns {Promise<void>}
-     * @memberof Mutex
-     */
-    Mutex.unlock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === MutexLockStatus.LOCKED) {
-                            _this.emitUnlockEvent(key);
-                        }
-                        delete _this.keys[key];
-                        resolve();
-                    })];
-            });
-        });
-    };
-    Mutex.onUnlockEvent = function (key, handler) {
-        if (this.listeners[key] === undefined) {
-            this.listeners[key] = [handler];
-        }
-        else {
-            this.listeners[key].push(handler);
-        }
-    };
-    Mutex.emitUnlockEvent = function (key) {
-        var _this = this;
-        if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
-            var handler_1 = this.listeners[key].shift();
-            setImmediate(function () {
-                handler_1.call(_this);
-            });
-        }
-    };
-    Mutex.keys = {};
-    Mutex.listeners = {};
-    return Mutex;
-}());
-
-/**
- * A BlobBatch represents an aggregated set of operations on blobs.
- * Currently, only `delete` and `setAccessTier` are supported.
- *
- * @export
- * @class BlobBatch
- */
-var BlobBatch = /** @class */ (function () {
-    function BlobBatch() {
-        this.batch = "batch";
-        this.batchRequest = new InnerBatchRequest();
-    }
-    /**
-     * Get the value of Content-Type for a batch request.
-     * The value must be multipart/mixed with a batch boundary.
-     * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
-     */
-    BlobBatch.prototype.getMultiPartContentType = function () {
-        return this.batchRequest.getMultipartContentType();
-    };
-    /**
-     * Get assembled HTTP request body for sub requests.
-     */
-    BlobBatch.prototype.getHttpRequestBody = function () {
-        return this.batchRequest.getHttpRequestBody();
-    };
-    /**
-     * Get sub requests that are added into the batch request.
-     */
-    BlobBatch.prototype.getSubRequests = function () {
-        return this.batchRequest.getSubRequests();
-    };
-    BlobBatch.prototype.addSubRequestInternal = function (subRequest, assembleSubRequestFunc) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, Mutex.lock(this.batch)];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        _a.trys.push([2, , 4, 6]);
-                        this.batchRequest.preAddSubRequest(subRequest);
-                        return [4 /*yield*/, assembleSubRequestFunc()];
-                    case 3:
-                        _a.sent();
-                        this.batchRequest.postAddSubRequest(subRequest);
-                        return [3 /*break*/, 6];
-                    case 4: return [4 /*yield*/, Mutex.unlock(this.batch)];
-                    case 5:
-                        _a.sent();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBatchType = function (batchType) {
-        if (!this.batchType) {
-            this.batchType = batchType;
-        }
-        if (this.batchType !== batchType) {
-            throw new RangeError("BlobBatch only supports one operation type per batch and it already is being used for " + this.batchType + " operations.");
-        }
-    };
-    BlobBatch.prototype.deleteBlob = function (urlOrBlobClient, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, _a, span, spanOptions, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
-                                credentialOrOptions instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrOptions))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            options = credentialOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchDeleteRequest-addSubRequest", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("delete");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBlobAccessTier = function (urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, tier, _a, span, spanOptions, e_2;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
-                                credentialOrTier instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrTier))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrTier;
-                            tier = tierOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            tier = credentialOrTier;
-                            options = tierOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchSetTierRequest-addSubRequest", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("setAccessTier");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobBatch;
-}());
-/**
- * Inner batch request class which is responsible for assembling and serializing sub requests.
- * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
- */
-var InnerBatchRequest = /** @class */ (function () {
-    function InnerBatchRequest() {
-        this.operationCount = 0;
-        this.body = "";
-        var tempGuid = coreHttp.generateUuid();
-        // batch_{batchid}
-        this.boundary = "batch_" + tempGuid;
-        // --batch_{batchid}
-        // Content-Type: application/http
-        // Content-Transfer-Encoding: binary
-        this.subRequestPrefix = "--" + this.boundary + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TYPE + ": application/http" + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TRANSFER_ENCODING + ": binary";
-        // multipart/mixed; boundary=batch_{batchid}
-        this.multipartContentType = "multipart/mixed; boundary=" + this.boundary;
-        // --batch_{batchid}--
-        this.batchRequestEnding = "--" + this.boundary + "--";
-        this.subRequests = new Map();
-    }
-    /**
-     * Create pipeline to assemble sub requests. The idea here is to use existing
-     * credential and serialization/deserialization components, with additional policies to
-     * filter unnecessary headers, assemble sub requests into request's body
-     * and intercept request from going to wire.
-     * @param {StorageSharedKeyCredential | AnonymousCredential | TokenCredential} credential  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the @azure/identity package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
-     */
-    InnerBatchRequest.prototype.createPipeline = function (credential) {
-        var isAnonymousCreds = credential instanceof AnonymousCredential;
-        var policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
-        var factories = new Array(policyFactoryLength);
-        factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
-        factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
-        if (!isAnonymousCreds) {
-            factories[2] = coreHttp.isTokenCredential(credential)
-                ? coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes)
-                : credential;
-        }
-        factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
-        return new Pipeline(factories, {});
-    };
-    InnerBatchRequest.prototype.appendSubRequestToBody = function (request) {
-        // Start to assemble sub request
-        this.body += [
-            this.subRequestPrefix,
-            HeaderConstants.CONTENT_ID + ": " + this.operationCount,
-            "",
-            request.method.toString() + " " + getURLPathAndQuery(request.url) + " " + HTTP_VERSION_1_1 + HTTP_LINE_ENDING // sub request start line with method
-        ].join(HTTP_LINE_ENDING);
-        for (var _i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-            var header = _a[_i];
-            this.body += header.name + ": " + header.value + HTTP_LINE_ENDING;
-        }
-        this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
-        // No body to assemble for current batch request support
-        // End to assemble sub request
-    };
-    InnerBatchRequest.prototype.preAddSubRequest = function (subRequest) {
-        if (this.operationCount >= BATCH_MAX_REQUEST) {
-            throw new RangeError("Cannot exceed " + BATCH_MAX_REQUEST + " sub requests in a single batch");
-        }
-        // Fast fail if url for sub request is invalid
-        var path = getURLPath(subRequest.url);
-        if (!path || path == "") {
-            throw new RangeError("Invalid url for sub request: '" + subRequest.url + "'");
-        }
-    };
-    InnerBatchRequest.prototype.postAddSubRequest = function (subRequest) {
-        this.subRequests.set(this.operationCount, subRequest);
-        this.operationCount++;
-    };
-    // Return the http request body with assembling the ending line to the sub request body.
-    InnerBatchRequest.prototype.getHttpRequestBody = function () {
-        return "" + this.body + this.batchRequestEnding + HTTP_LINE_ENDING;
-    };
-    InnerBatchRequest.prototype.getMultipartContentType = function () {
-        return this.multipartContentType;
-    };
-    InnerBatchRequest.prototype.getSubRequests = function () {
-        return this.subRequests;
-    };
-    return InnerBatchRequest;
-}());
-var BatchRequestAssemblePolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchRequestAssemblePolicy, _super);
-    function BatchRequestAssemblePolicy(batchRequest, nextPolicy, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.dummyResponse = {
-            request: new coreHttp.WebResource(),
-            status: 200,
-            headers: new coreHttp.HttpHeaders()
-        };
-        _this.batchRequest = batchRequest;
-        return _this;
-    }
-    BatchRequestAssemblePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, this.batchRequest.appendSubRequestToBody(request)];
-                    case 1:
-                        _a.sent();
-                        return [2 /*return*/, this.dummyResponse]; // Intercept request from going to wire
-                }
-            });
-        });
-    };
-    return BatchRequestAssemblePolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchRequestAssemblePolicyFactory = /** @class */ (function () {
-    function BatchRequestAssemblePolicyFactory(batchRequest) {
-        this.batchRequest = batchRequest;
-    }
-    BatchRequestAssemblePolicyFactory.prototype.create = function (nextPolicy, options) {
-        return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
-    };
-    return BatchRequestAssemblePolicyFactory;
-}());
-var BatchHeaderFilterPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchHeaderFilterPolicy, _super);
-    function BatchHeaderFilterPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
-    }
-    BatchHeaderFilterPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var xMsHeaderName, _i, _a, header;
-            return tslib.__generator(this, function (_b) {
-                xMsHeaderName = "";
-                for (_i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-                    header = _a[_i];
-                    if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
-                        xMsHeaderName = header.name;
-                    }
-                }
-                if (xMsHeaderName !== "") {
-                    request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return BatchHeaderFilterPolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
-    function BatchHeaderFilterPolicyFactory() {
-    }
-    BatchHeaderFilterPolicyFactory.prototype.create = function (nextPolicy, options) {
-        return new BatchHeaderFilterPolicy(nextPolicy, options);
-    };
-    return BatchHeaderFilterPolicyFactory;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.
- *
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
- */
-var BlobBatchClient = /** @class */ (function () {
-    function BlobBatchClient(url, credentialOrPipeline, options) {
-        var pipeline;
-        if (credentialOrPipeline instanceof Pipeline) {
-            pipeline = credentialOrPipeline;
-        }
-        else if (!credentialOrPipeline) {
-            // no credential provided
-            pipeline = newPipeline(new AnonymousCredential(), options);
-        }
-        else {
-            pipeline = newPipeline(credentialOrPipeline, options);
-        }
-        var storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
-        this._serviceContext = new Service(storageClientContext);
-    }
-    /**
-     * Creates a {@link BlobBatch}.
-     * A BlobBatch represents an aggregated set of operations on blobs.
-     */
-    BlobBatchClient.prototype.createBatch = function () {
-        return new BlobBatch();
-    };
-    BlobBatchClient.prototype.deleteBlobs = function (urlsOrBlobClients, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_1, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_1 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_1.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_1[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    BlobBatchClient.prototype.setBlobsAccessTier = function (urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_2, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_2 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_2.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_2[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    /**
-     * Submit batch request which consists of multiple subrequests.
-     *
-     * Get `blobBatchClient` and other details before running the snippets.
-     * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`
-     *
-     * Example usage:
-     *
-     * ```js
-     * let batchRequest = new BlobBatch();
-     * await batchRequest.deleteBlob(urlInString0, credential0);
-     * await batchRequest.deleteBlob(urlInString1, credential1, {
-     *  deleteSnapshots: "include"
-     * });
-     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
-     * console.log(batchResp.subResponsesSucceededCount);
-     * ```
-     *
-     * Example using a lease:
-     *
-     * ```js
-     * let batchRequest = new BlobBatch();
-     * await batchRequest.setBlobAccessTier(blockBlobClient0, "Cool");
-     * await batchRequest.setBlobAccessTier(blockBlobClient1, "Cool", {
-     *  conditions: { leaseId: leaseId }
-     * });
-     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
-     * console.log(batchResp.subResponsesSucceededCount);
-     * ```
+     * Creates a BlobBatchClient object to conduct batch operations.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
      *
-     * @param {BlobBatch} batchRequest A set of Delete or SetTier operations.
-     * @param {BlobBatchSubmitBatchOptionalParams} [options]
-     * @returns {Promise<BlobBatchSubmitBatchResponse>}
-     * @memberof BlobBatchClient
+     * @returns A new BlobBatchClient object for this container.
      */
-    BlobBatchClient.prototype.submitBatch = function (batchRequest, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, batchRequestBody, rawBatchResponse, batchResponseParser, responseSummary, res, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
-                            throw new RangeError("Batch request should contain one or more sub requests.");
-                        }
-                        _a = createSpan("BlobBatchClient-submitBatch", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        batchRequestBody = batchRequest.getHttpRequestBody();
-                        return [4 /*yield*/, this._serviceContext.submitBatch(batchRequestBody, utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), tslib.__assign(tslib.__assign({}, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        rawBatchResponse = _b.sent();
-                        batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
-                        return [4 /*yield*/, batchResponseParser.parseBatchResponse()];
-                    case 3:
-                        responseSummary = _b.sent();
-                        res = {
-                            _response: rawBatchResponse._response,
-                            contentType: rawBatchResponse.contentType,
-                            errorCode: rawBatchResponse.errorCode,
-                            requestId: rawBatchResponse.requestId,
-                            clientRequestId: rawBatchResponse.clientRequestId,
-                            version: rawBatchResponse.version,
-                            subResponses: responseSummary.subResponses,
-                            subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
-                            subResponsesFailedCount: responseSummary.subResponsesFailedCount
-                        };
-                        return [2 /*return*/, res];
-                    case 4:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobBatchClient;
-}());
+    getBlobBatchClient() {
+        return new BlobBatchClient(this.url, this.pipeline);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
+ * values are set, this should be serialized with toString and set as the permissions field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class AccountSASPermissions {
+    constructor() {
+        /**
+         * Permission to read resources and list queues and tables granted.
+         */
+        this.read = false;
+        /**
+         * Permission to write resources granted.
+         */
+        this.write = false;
+        /**
+         * Permission to create blobs and files granted.
+         */
+        this.delete = false;
+        /**
+         * Permission to delete versions granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Permission to list blob containers, blobs, shares, directories, and files granted.
+         */
+        this.list = false;
+        /**
+         * Permission to add messages, table entities, and append to blobs granted.
+         */
+        this.add = false;
+        /**
+         * Permission to create blobs and files granted.
+         */
+        this.create = false;
+        /**
+         * Permissions to update messages and table entities granted.
+         */
+        this.update = false;
+        /**
+         * Permission to get and delete messages granted.
+         */
+        this.process = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Permission to filter blobs.
+         */
+        this.filter = false;
+        /**
+         * Permission to set immutability policy.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Parse initializes the AccountSASPermissions fields from a string.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const accountSASPermissions = new AccountSASPermissions();
+        for (const c of permissions) {
+            switch (c) {
+                case "r":
+                    accountSASPermissions.read = true;
+                    break;
+                case "w":
+                    accountSASPermissions.write = true;
+                    break;
+                case "d":
+                    accountSASPermissions.delete = true;
+                    break;
+                case "x":
+                    accountSASPermissions.deleteVersion = true;
+                    break;
+                case "l":
+                    accountSASPermissions.list = true;
+                    break;
+                case "a":
+                    accountSASPermissions.add = true;
+                    break;
+                case "c":
+                    accountSASPermissions.create = true;
+                    break;
+                case "u":
+                    accountSASPermissions.update = true;
+                    break;
+                case "p":
+                    accountSASPermissions.process = true;
+                    break;
+                case "t":
+                    accountSASPermissions.tag = true;
+                    break;
+                case "f":
+                    accountSASPermissions.filter = true;
+                    break;
+                case "i":
+                    accountSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission character: ${c}`);
+            }
+        }
+        return accountSASPermissions;
+    }
+    /**
+     * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const accountSASPermissions = new AccountSASPermissions();
+        if (permissionLike.read) {
+            accountSASPermissions.read = true;
+        }
+        if (permissionLike.write) {
+            accountSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            accountSASPermissions.delete = true;
+        }
+        if (permissionLike.deleteVersion) {
+            accountSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.filter) {
+            accountSASPermissions.filter = true;
+        }
+        if (permissionLike.tag) {
+            accountSASPermissions.tag = true;
+        }
+        if (permissionLike.list) {
+            accountSASPermissions.list = true;
+        }
+        if (permissionLike.add) {
+            accountSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            accountSASPermissions.create = true;
+        }
+        if (permissionLike.update) {
+            accountSASPermissions.update = true;
+        }
+        if (permissionLike.process) {
+            accountSASPermissions.process = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            accountSASPermissions.setImmutabilityPolicy = true;
+        }
+        return accountSASPermissions;
+    }
+    /**
+     * Produces the SAS permissions string for an Azure Storage account.
+     * Call this method to set AccountSASSignatureValues Permissions field.
+     *
+     * Using this method will guarantee the resource types are in
+     * an order accepted by the service.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+     *
+     */
+    toString() {
+        // The order of the characters should be as specified here to ensure correctness:
+        // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+        // Use a string array instead of string concatenating += operator for performance
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.filter) {
+            permissions.push("f");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.list) {
+            permissions.push("l");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.update) {
+            permissions.push("u");
+        }
+        if (this.process) {
+            permissions.push("p");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
+ * values are set, this should be serialized with toString and set as the resources field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
+ * the order of the resources is particular and this class guarantees correctness.
+ */
+class AccountSASResourceTypes {
+    constructor() {
+        /**
+         * Permission to access service level APIs granted.
+         */
+        this.service = false;
+        /**
+         * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
+         */
+        this.container = false;
+        /**
+         * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
+         */
+        this.object = false;
+    }
+    /**
+     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid resource type.
+     *
+     * @param resourceTypes -
+     */
+    static parse(resourceTypes) {
+        const accountSASResourceTypes = new AccountSASResourceTypes();
+        for (const c of resourceTypes) {
+            switch (c) {
+                case "s":
+                    accountSASResourceTypes.service = true;
+                    break;
+                case "c":
+                    accountSASResourceTypes.container = true;
+                    break;
+                case "o":
+                    accountSASResourceTypes.object = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid resource type: ${c}`);
+            }
+        }
+        return accountSASResourceTypes;
+    }
+    /**
+     * Converts the given resource types to a string.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+     *
+     */
+    toString() {
+        const resourceTypes = [];
+        if (this.service) {
+            resourceTypes.push("s");
+        }
+        if (this.container) {
+            resourceTypes.push("c");
+        }
+        if (this.object) {
+            resourceTypes.push("o");
+        }
+        return resourceTypes.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant access to that service. Once all the
+ * values are set, this should be serialized with toString and set as the services field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
+ * the order of the services is particular and this class guarantees correctness.
+ */
+class AccountSASServices {
+    constructor() {
+        /**
+         * Permission to access blob resources granted.
+         */
+        this.blob = false;
+        /**
+         * Permission to access file resources granted.
+         */
+        this.file = false;
+        /**
+         * Permission to access queue resources granted.
+         */
+        this.queue = false;
+        /**
+         * Permission to access table resources granted.
+         */
+        this.table = false;
+    }
+    /**
+     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid service.
+     *
+     * @param services -
+     */
+    static parse(services) {
+        const accountSASServices = new AccountSASServices();
+        for (const c of services) {
+            switch (c) {
+                case "b":
+                    accountSASServices.blob = true;
+                    break;
+                case "f":
+                    accountSASServices.file = true;
+                    break;
+                case "q":
+                    accountSASServices.queue = true;
+                    break;
+                case "t":
+                    accountSASServices.table = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid service character: ${c}`);
+            }
+        }
+        return accountSASServices;
+    }
+    /**
+     * Converts the given services to a string.
+     *
+     */
+    toString() {
+        const services = [];
+        if (this.blob) {
+            services.push("b");
+        }
+        if (this.table) {
+            services.push("t");
+        }
+        if (this.queue) {
+            services.push("q");
+        }
+        if (this.file) {
+            services.push("f");
+        }
+        return services.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
+ * REST request.
+ *
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+ *
+ * @param accountSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
+    const version = accountSASSignatureValues.version
+        ? accountSASSignatureValues.version
+        : SERVICE_VERSION;
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.setImmutabilityPolicy &&
+        version < "2020-08-04") {
+        throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.deleteVersion &&
+        version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.tag &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.filter &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
+    }
+    const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
+    const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
+    const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
+    const stringToSign = [
+        sharedKeyCredential.accountName,
+        parsedPermissions,
+        parsedServices,
+        parsedResourceTypes,
+        accountSASSignatureValues.startsOn
+            ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)
+            : "",
+        truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),
+        accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : "",
+        accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : "",
+        version,
+        "" // Account SAS requires an additional newline character
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
+}
 
 /**
  * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you
  * to manipulate blob containers.
- *
- * @export
- * @class BlobServiceClient
  */
-var BlobServiceClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobServiceClient, _super);
-    function BlobServiceClient(url, credentialOrPipeline, options) {
-        var _this = this;
-        var pipeline;
-        if (credentialOrPipeline instanceof Pipeline) {
+class BlobServiceClient extends StorageClient {
+    constructor(url, credentialOrPipeline, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        if (isPipelineLike(credentialOrPipeline)) {
             pipeline = credentialOrPipeline;
         }
         else if ((coreHttp.isNode && credentialOrPipeline instanceof StorageSharedKeyCredential) ||
@@ -31682,48 +32504,48 @@ var BlobServiceClient = /** @class */ (function (_super) {
             // The second parameter is undefined. Use anonymous credential
             pipeline = newPipeline(new AnonymousCredential(), options);
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.serviceContext = new Service(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.serviceContext = new Service(this.storageClientContext);
     }
     /**
      *
      * Creates an instance of BlobServiceClient from connection string.
      *
-     * @param {string} connectionString Account connection string or a SAS connection string of an Azure storage account.
+     * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.
      *                                  [ Note - Account connection string can only be used in NODE.JS runtime. ]
      *                                  Account connection string example -
      *                                  `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`
      *                                  SAS connection string example -
      *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
-     * @param {StoragePipelineOptions} [options] Optional. Options to configure the HTTP pipeline.
-     * @memberof BlobServiceClient
+     * @param options - Optional. Options to configure the HTTP pipeline.
      */
-    BlobServiceClient.fromConnectionString = function (connectionString, options) {
+    static fromConnectionString(connectionString, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         options = options || {};
-        var extractedCreds = extractConnectionStringParts(connectionString);
+        const extractedCreds = extractConnectionStringParts(connectionString);
         if (extractedCreds.kind === "AccountConnString") {
             {
-                var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                 options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
-                var pipeline = newPipeline(sharedKeyCredential, options);
+                const pipeline = newPipeline(sharedKeyCredential, options);
                 return new BlobServiceClient(extractedCreds.url, pipeline);
             }
         }
         else if (extractedCreds.kind === "SASConnString") {
-            var pipeline = newPipeline(new AnonymousCredential(), options);
+            const pipeline = newPipeline(new AnonymousCredential(), options);
             return new BlobServiceClient(extractedCreds.url + "?" + extractedCreds.accountSas, pipeline);
         }
         else {
             throw new Error("Connection string must be either an Account connection string or a SAS connection string");
         }
-    };
+    }
     /**
      * Creates a {@link ContainerClient} object
      *
-     * @param {string} containerName A container name
-     * @returns {ContainerClient} A new ContainerClient object for the given container name.
-     * @memberof BlobServiceClient
+     * @param containerName - A container name
+     * @returns A new ContainerClient object for the given container name.
      *
      * Example usage:
      *
@@ -31731,210 +32553,195 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * const containerClient = blobServiceClient.getContainerClient("<container name>");
      * ```
      */
-    BlobServiceClient.prototype.getContainerClient = function (containerName) {
+    getContainerClient(containerName) {
         return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);
-    };
+    }
     /**
      * Create a Blob container.
      *
-     * @param {string} containerName Name of the container to create.
-     * @param {ContainerCreateOptions} [options] Options to configure Container Create operation.
-     * @returns {Promise<{ containerClient: ContainerClient; containerCreateResponse: ContainerCreateResponse }>} Container creation response and the corresponding container client.
-     * @memberof BlobServiceClient
+     * @param containerName - Name of the container to create.
+     * @param options - Options to configure Container Create operation.
+     * @returns Container creation response and the corresponding container client.
      */
-    BlobServiceClient.prototype.createContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, containerClient, containerCreateResponse, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-createContainer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.create(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        containerCreateResponse = _b.sent();
-                        return [2 /*return*/, {
-                                containerClient: containerClient,
-                                containerCreateResponse: containerCreateResponse
-                            }];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async createContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-createContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            const containerCreateResponse = await containerClient.create(updatedOptions);
+            return {
+                containerClient,
+                containerCreateResponse
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Deletes a Blob container.
      *
-     * @param {string} containerName Name of the container to delete.
-     * @param {ContainerDeleteMethodOptions} [options] Options to configure Container Delete operation.
-     * @returns {Promise<ContainerDeleteResponse>} Container deletion response.
-     * @memberof BlobServiceClient
+     * @param containerName - Name of the container to delete.
+     * @param options - Options to configure Container Delete operation.
+     * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.deleteContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, containerClient, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-deleteContainer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-deleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            return await containerClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Restore a previously deleted Blob container.
+     * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.
+     *
+     * @param deletedContainerName - Name of the previously deleted container.
+     * @param deletedContainerVersion - Version of the previously deleted container, used to uniquely identify the deleted container.
+     * @param options - Options to configure Container Restore operation.
+     * @returns Container deletion response.
+     */
+    async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-undeleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerUndeleteResponse = await containerContext.restore(Object.assign({ deletedContainerName,
+                deletedContainerVersion }, updatedOptions));
+            return { containerClient, containerUndeleteResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Rename an existing Blob Container.
+     *
+     * @param sourceContainerName - The name of the source container.
+     * @param destinationContainerName - The new name of the container.
+     * @param options - Options to configure Container Rename operation.
+     */
+    /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */
+    // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.
+    async renameContainer(sourceContainerName, destinationContainerName, options = {}) {
+        var _a;
+        const { span, updatedOptions } = createSpan("BlobServiceClient-renameContainer", options);
+        try {
+            const containerClient = this.getContainerClient(destinationContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerRenameResponse = await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }));
+            return { containerClient, containerRenameResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the properties of a storage account’s Blob service, including properties
      * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties
      *
-     * @param {ServiceGetPropertiesOptions} [options] Options to the Service Get Properties operation.
-     * @returns {Promise<ServiceGetPropertiesResponse>} Response data for the Service Get Properties operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Properties operation.
+     * @returns Response data for the Service Get Properties operation.
      */
-    BlobServiceClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getProperties({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_3 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getProperties", options);
+        try {
+            return await this.serviceContext.getProperties(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets properties for a storage account’s Blob service endpoint, including properties
      * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties}
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties
      *
-     * @param {BlobServiceProperties} properties
-     * @param {ServiceSetPropertiesOptions} [options] Options to the Service Set Properties operation.
-     * @returns {Promise<ServiceSetPropertiesResponse>} Response data for the Service Set Properties operation.
-     * @memberof BlobServiceClient
+     * @param properties -
+     * @param options - Options to the Service Set Properties operation.
+     * @returns Response data for the Service Set Properties operation.
      */
-    BlobServiceClient.prototype.setProperties = function (properties, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_4;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-setProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.setProperties(properties, {
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_4 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setProperties(properties, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-setProperties", options);
+        try {
+            return await this.serviceContext.setProperties(properties, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only
      * available on the secondary location endpoint when read-access geo-redundant
      * replication is enabled for the storage account.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats}
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats
      *
-     * @param {ServiceGetStatisticsOptions} [options] Options to the Service Get Statistics operation.
-     * @returns {Promise<ServiceGetStatisticsResponse>} Response data for the Service Get Statistics operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Statistics operation.
+     * @returns Response data for the Service Get Statistics operation.
      */
-    BlobServiceClient.prototype.getStatistics = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getStatistics", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getStatistics({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getStatistics(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getStatistics", options);
+        try {
+            return await this.serviceContext.getStatistics(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Get Account Information operation returns the sku name and account kind
      * for the specified account.
@@ -31942,240 +32749,155 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * with version 2018-03-28.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information
      *
-     * @param {ServiceGetAccountInfoOptions} [options] Options to the Service Get Account Info operation.
-     * @returns {Promise<ServiceGetAccountInfoResponse>} Response data for the Service Get Account Info operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Account Info operation.
+     * @returns Response data for the Service Get Account Info operation.
      */
-    BlobServiceClient.prototype.getAccountInfo = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getAccountInfo", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getAccountInfo({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getAccountInfo(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getAccountInfo", options);
+        try {
+            return await this.serviceContext.getAccountInfo(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns a list of the containers under the specified account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2
      *
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                        the list of containers to be returned with the next listing operation. The
-     *                        operation returns the NextMarker value within the response body if the
+     *                        operation returns the continuationToken value within the response body if the
      *                        listing operation did not return all containers remaining to be listed
-     *                        with the current page. The NextMarker value can be used as the value for
+     *                        with the current page. The continuationToken value can be used as the value for
      *                        the marker parameter in a subsequent call to request the next page of list
      *                        items. The marker value is opaque to the client.
-     * @param {ServiceListContainersSegmentOptions} [options] Options to the Service List Container Segment operation.
-     * @returns {Promise<ServiceListContainersSegmentResponse>} Response data for the Service List Container Segment operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service List Container Segment operation.
+     * @returns Response data for the Service List Container Segment operation.
      */
-    BlobServiceClient.prototype.listContainersSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-listContainersSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.listContainersSegment(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, marker: marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include, spanOptions: spanOptions }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listContainersSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-listContainersSegment", options);
+        try {
+            return await this.serviceContext.listContainersSegment(Object.assign(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags
      * match a given search expression. Filter blobs searches across all containers within a
      * storage account but can be scoped within the expression to a single container.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                        The given expression must evaluate to true for a blob to be returned in the results.
      *                                        The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                        however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
-     *                          operation returns the NextMarker value within the response body if the
+     *                          operation returns the continuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
-     *                          with the current page. The NextMarker value can be used as the value for
+     *                          with the current page. The continuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to find blobs by tags.
-     * @returns {Promise<ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegment = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-findBlobsByTagsSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.filterBlobs({
-                                abortSignal: options.abortSignal,
-                                where: tagFilterSqlExpression,
-                                marker: marker,
-                                maxPageSize: options.maxPageSize,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-findBlobsByTagsSegment", options);
+        try {
+            const response = await this.serviceContext.filterBlobs(Object.assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {
+                    var _a;
+                    let tagValue = "";
+                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
+                        tagValue = blob.tags.blobTagSet[0].value;
+                    }
+                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });
+                }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
-     *                          operation returns the NextMarker value within the response body if the
+     *                          operation returns the continuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
-     *                          with the current page. The NextMarker value can be used as the value for
+     *                          with the current page. The continuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to find blobs by tags.
-     * @returns {AsyncIterableIterator<ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegments = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsSegments_1() {
-            var response;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 6];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options))];
-                    case 2:
-                        response = _a.sent();
-                        response.blobs = response.blobs || [];
-                        marker = response.continuationToken;
-                        return [4 /*yield*/, tslib.__await(response)];
-                    case 3: return [4 /*yield*/, _a.sent()];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 6;
-                    case 6: return [2 /*return*/];
-                }
-            });
+    findBlobsByTagsSegments(tagFilterSqlExpression, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1() {
+            let response;
+            if (!!marker || marker === undefined) {
+                do {
+                    response = yield tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));
+                    response.blobs = response.blobs || [];
+                    marker = response.continuationToken;
+                    yield yield tslib.__await(response);
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for blobs.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to findBlobsByTagsItems.
-     * @returns {AsyncIterableIterator<FilterBlobItem>}
-     * @memberof BlobServiceClient
+     * @param options - Options to findBlobsByTagsItems.
      */
-    BlobServiceClient.prototype.findBlobsByTagsItems = function (tagFilterSqlExpression, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsItems_1() {
-            var marker, _a, _b, segment, e_9_1;
-            var e_9, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_9_1 = _d.sent();
-                        e_9 = { error: e_9_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_9) throw e_9.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    findBlobsByTagsItems(tagFilterSqlExpression, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to find all blobs with specified tag
      * under the specified account.
@@ -32249,139 +32971,87 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {ServiceFindBlobByTagsOptions} [options={}] Options to find blobs by tags.
-     * @returns {PagedAsyncIterableIterator<FilterBlobItem, ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTags = function (tagFilterSqlExpression, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    findBlobsByTags(tagFilterSqlExpression, options = {}) {
         // AsyncIterableIterator to iterate over blobs
-        var listSegmentOptions = tslib.__assign({}, options);
-        var iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign({}, options);
+        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses
      *
-     * @private
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                        the list of containers to be returned with the next listing operation. The
-     *                        operation returns the NextMarker value within the response body if the
+     *                        operation returns the continuationToken value within the response body if the
      *                        listing operation did not return all containers remaining to be listed
-     *                        with the current page. The NextMarker value can be used as the value for
+     *                        with the current page. The continuationToken value can be used as the value for
      *                        the marker parameter in a subsequent call to request the next page of list
      *                        items. The marker value is opaque to the client.
-     * @param {ServiceListContainersSegmentOptions} [options] Options to list containers operation.
-     * @returns {AsyncIterableIterator<ServiceListContainersSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listContainersSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listContainersSegment(marker, options))];
-                    case 2:
-                        listContainersSegmentResponse = _a.sent();
-                        listContainersSegmentResponse.containerItems =
-                            listContainersSegmentResponse.containerItems || [];
-                        marker = listContainersSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listContainersSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listContainersSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listContainersSegmentResponse = yield tslib.__await(this.listContainersSegment(marker, options));
+                    listContainersSegmentResponse.containerItems =
+                        listContainersSegmentResponse.containerItems || [];
+                    marker = listContainersSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listContainersSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for Container Items
      *
-     * @private
-     * @param {ServiceListContainersSegmentOptions} [options] Options to list containers operation.
-     * @returns {AsyncIterableIterator<ContainerItem>}
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, segment, e_10_1;
-            var e_10, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_10_1 = _d.sent();
-                        e_10 = { error: e_10_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_10) throw e_10.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)));
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the containers
      * under the specified account.
@@ -32453,43 +33123,44 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {ServiceListContainersOptions} [options={}] Options to list containers.
-     * @returns {PagedAsyncIterableIterator<ContainerItem, ServiceListContainersSegmentResponse>} An asyncIterableIterator that supports paging.
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers.
+     * @returns An asyncIterableIterator that supports paging.
      */
-    BlobServiceClient.prototype.listContainers = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listContainers(options = {}) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
+        const include = [];
+        if (options.includeDeleted) {
+            include.push("deleted");
+        }
+        if (options.includeMetadata) {
+            include.push("metadata");
+        }
         // AsyncIterableIterator to iterate over containers
-        var listSegmentOptions = tslib.__assign(tslib.__assign({}, options), (options.includeMetadata ? { include: "metadata" } : {}));
-        var iter = this.listItems(listSegmentOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));
+        const iter = this.listItems(listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
      *
@@ -32498,1393 +33169,76 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key
      *
-     * @param {Date} startsOn      The start time for the user delegation SAS. Must be within 7 days of the current time
-     * @param {Date} expiresOn     The end time for the user delegation SAS. Must be within 7 days of the current time
-     * @returns {Promise<ServiceGetUserDelegationKeyResponse>}
-     * @memberof BlobServiceClient
+     * @param startsOn -      The start time for the user delegation SAS. Must be within 7 days of the current time
+     * @param expiresOn -     The end time for the user delegation SAS. Must be within 7 days of the current time
      */
-    BlobServiceClient.prototype.getUserDelegationKey = function (startsOn, expiresOn, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, userDelegationKey, res, e_11;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getUserDelegationKey", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getUserDelegationKey({
-                                startsOn: truncatedISO8061Date(startsOn, false),
-                                expiresOn: truncatedISO8061Date(expiresOn, false)
-                            }, {
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _b.sent();
-                        userDelegationKey = {
-                            signedObjectId: response.signedObjectId,
-                            signedTenantId: response.signedTenantId,
-                            signedStartsOn: new Date(response.signedStartsOn),
-                            signedExpiresOn: new Date(response.signedExpiresOn),
-                            signedService: response.signedService,
-                            signedVersion: response.signedVersion,
-                            value: response.value
-                        };
-                        res = tslib.__assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_11 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getUserDelegationKey(startsOn, expiresOn, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getUserDelegationKey", options);
+        try {
+            const response = await this.serviceContext.getUserDelegationKey({
+                startsOn: truncatedISO8061Date(startsOn, false),
+                expiresOn: truncatedISO8061Date(expiresOn, false)
+            }, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const userDelegationKey = {
+                signedObjectId: response.signedObjectId,
+                signedTenantId: response.signedTenantId,
+                signedStartsOn: new Date(response.signedStartsOn),
+                signedExpiresOn: new Date(response.signedExpiresOn),
+                signedService: response.signedService,
+                signedVersion: response.signedVersion,
+                value: response.value
+            };
+            const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
      *
-     * @returns {BlobBatchClient} A new BlobBatchClient object for this service.
-     * @memberof BlobServiceClient
+     * @returns A new BlobBatchClient object for this service.
      */
-    BlobServiceClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
-    return BlobServiceClient;
-}(StorageClient));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
- * values are set, this should be serialized with toString and set as the permissions field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASPermissions
- */
-var AccountSASPermissions = /** @class */ (function () {
-    function AccountSASPermissions() {
-        /**
-         * Permission to read resources and list queues and tables granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.read = false;
-        /**
-         * Permission to write resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.write = false;
-        /**
-         * Permission to create blobs and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Permission to delete versions granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Permission to list blob containers, blobs, shares, directories, and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.list = false;
-        /**
-         * Permission to add messages, table entities, and append to blobs granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.add = false;
-        /**
-         * Permission to create blobs and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.create = false;
-        /**
-         * Permissions to update messages and table entities granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.update = false;
-        /**
-         * Permission to get and delete messages granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.process = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.tag = false;
-        /**
-         * Permission to filter blobs.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.filter = false;
     }
     /**
-     * Parse initializes the AccountSASPermissions fields from a string.
+     * Only available for BlobServiceClient constructed with a shared key credential.
      *
-     * @static
-     * @param {string} permissions
-     * @returns {AccountSASPermissions}
-     * @memberof AccountSASPermissions
+     * Generates a Blob account Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas
+     *
+     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.
+     * @param permissions - Specifies the list of permissions to be associated with the SAS.
+     * @param resourceTypes - Specifies the resource types associated with the shared access signature.
+     * @param options - Optional parameters.
+     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    AccountSASPermissions.parse = function (permissions) {
-        var accountSASPermissions = new AccountSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var c = permissions_1[_i];
-            switch (c) {
-                case "r":
-                    accountSASPermissions.read = true;
-                    break;
-                case "w":
-                    accountSASPermissions.write = true;
-                    break;
-                case "d":
-                    accountSASPermissions.delete = true;
-                    break;
-                case "x":
-                    accountSASPermissions.deleteVersion = true;
-                    break;
-                case "l":
-                    accountSASPermissions.list = true;
-                    break;
-                case "a":
-                    accountSASPermissions.add = true;
-                    break;
-                case "c":
-                    accountSASPermissions.create = true;
-                    break;
-                case "u":
-                    accountSASPermissions.update = true;
-                    break;
-                case "p":
-                    accountSASPermissions.process = true;
-                    break;
-                case "t":
-                    accountSASPermissions.tag = true;
-                    break;
-                case "f":
-                    accountSASPermissions.filter = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission character: " + c);
-            }
+    generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse("r"), resourceTypes = "sco", options = {}) {
+        if (!(this.credential instanceof StorageSharedKeyCredential)) {
+            throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential");
         }
-        return accountSASPermissions;
-    };
-    /**
-     * Produces the SAS permissions string for an Azure Storage account.
-     * Call this method to set AccountSASSignatureValues Permissions field.
-     *
-     * Using this method will guarantee the resource types are in
-     * an order accepted by the service.
-     *
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-     *
-     * @returns {string}
-     * @memberof AccountSASPermissions
-     */
-    AccountSASPermissions.prototype.toString = function () {
-        // The order of the characters should be as specified here to ensure correctness:
-        // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-        // Use a string array instead of string concatenating += operator for performance
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
+        if (expiresOn === undefined) {
+            const now = new Date();
+            expiresOn = new Date(now.getTime() + 3600 * 1000);
         }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.filter) {
-            permissions.push("f");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        if (this.list) {
-            permissions.push("l");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.update) {
-            permissions.push("u");
-        }
-        if (this.process) {
-            permissions.push("p");
-        }
-        return permissions.join("");
-    };
-    return AccountSASPermissions;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
- * values are set, this should be serialized with toString and set as the resources field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
- * the order of the resources is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASResourceTypes
- */
-var AccountSASResourceTypes = /** @class */ (function () {
-    function AccountSASResourceTypes() {
-        /**
-         * Permission to access service level APIs granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.service = false;
-        /**
-         * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.container = false;
-        /**
-         * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.object = false;
+        const sas = generateAccountSASQueryParameters(Object.assign({ permissions,
+            expiresOn,
+            resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
+        return appendToURLQuery(this.url, sas);
     }
-    /**
-     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid resource type.
-     *
-     * @static
-     * @param {string} resourceTypes
-     * @returns {AccountSASResourceTypes}
-     * @memberof AccountSASResourceTypes
-     */
-    AccountSASResourceTypes.parse = function (resourceTypes) {
-        var accountSASResourceTypes = new AccountSASResourceTypes();
-        for (var _i = 0, resourceTypes_1 = resourceTypes; _i < resourceTypes_1.length; _i++) {
-            var c = resourceTypes_1[_i];
-            switch (c) {
-                case "s":
-                    accountSASResourceTypes.service = true;
-                    break;
-                case "c":
-                    accountSASResourceTypes.container = true;
-                    break;
-                case "o":
-                    accountSASResourceTypes.object = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid resource type: " + c);
-            }
-        }
-        return accountSASResourceTypes;
-    };
-    /**
-     * Converts the given resource types to a string.
-     *
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-     *
-     * @returns {string}
-     * @memberof AccountSASResourceTypes
-     */
-    AccountSASResourceTypes.prototype.toString = function () {
-        var resourceTypes = [];
-        if (this.service) {
-            resourceTypes.push("s");
-        }
-        if (this.container) {
-            resourceTypes.push("c");
-        }
-        if (this.object) {
-            resourceTypes.push("o");
-        }
-        return resourceTypes.join("");
-    };
-    return AccountSASResourceTypes;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant access to that service. Once all the
- * values are set, this should be serialized with toString and set as the services field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
- * the order of the services is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASServices
- */
-var AccountSASServices = /** @class */ (function () {
-    function AccountSASServices() {
-        /**
-         * Permission to access blob resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.blob = false;
-        /**
-         * Permission to access file resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.file = false;
-        /**
-         * Permission to access queue resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.queue = false;
-        /**
-         * Permission to access table resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.table = false;
-    }
-    /**
-     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid service.
-     *
-     * @static
-     * @param {string} services
-     * @returns {AccountSASServices}
-     * @memberof AccountSASServices
-     */
-    AccountSASServices.parse = function (services) {
-        var accountSASServices = new AccountSASServices();
-        for (var _i = 0, services_1 = services; _i < services_1.length; _i++) {
-            var c = services_1[_i];
-            switch (c) {
-                case "b":
-                    accountSASServices.blob = true;
-                    break;
-                case "f":
-                    accountSASServices.file = true;
-                    break;
-                case "q":
-                    accountSASServices.queue = true;
-                    break;
-                case "t":
-                    accountSASServices.table = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid service character: " + c);
-            }
-        }
-        return accountSASServices;
-    };
-    /**
-     * Converts the given services to a string.
-     *
-     * @returns {string}
-     * @memberof AccountSASServices
-     */
-    AccountSASServices.prototype.toString = function () {
-        var services = [];
-        if (this.blob) {
-            services.push("b");
-        }
-        if (this.table) {
-            services.push("t");
-        }
-        if (this.queue) {
-            services.push("q");
-        }
-        if (this.file) {
-            services.push("f");
-        }
-        return services.join("");
-    };
-    return AccountSASServices;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * Generate SasIPRange format string. For example:
- *
- * "8.8.8.8" or "1.1.1.1-255.255.255.255"
- *
- * @export
- * @param {SasIPRange} ipRange
- * @returns {string}
- */
-function ipRangeToString(ipRange) {
-    return ipRange.end ? ipRange.start + "-" + ipRange.end : ipRange.start;
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-(function (SASProtocol) {
-    /**
-     * Protocol that allows HTTPS only
-     */
-    SASProtocol["Https"] = "https";
-    /**
-     * Protocol that allows both HTTPS and HTTP
-     */
-    SASProtocol["HttpsAndHttp"] = "https,http";
-})(exports.SASProtocol || (exports.SASProtocol = {}));
-/**
- * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
- * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}
- * types. Once generated, it can be encoded into a {@code String} and appended to a URL directly (though caution should
- * be taken here in case there are existing query parameters, which might affect the appropriate means of appending
- * these query parameters).
- *
- * NOTE: Instances of this class are immutable.
- *
- * @export
- * @class SASQueryParameters
- */
-var SASQueryParameters = /** @class */ (function () {
-    /**
-     * Creates an instance of SASQueryParameters.
-     *
-     * @param {string} version Representing the storage version
-     * @param {string} signature Representing the signature for the SAS token
-     * @param {string} [permissions] Representing the storage permissions
-     * @param {string} [services] Representing the storage services being accessed (only for Account SAS)
-     * @param {string} [resourceTypes] Representing the storage resource types being accessed (only for Account SAS)
-     * @param {SASProtocol} [protocol] Representing the allowed HTTP protocol(s)
-     * @param {Date} [startsOn] Representing the start time for this SAS token
-     * @param {Date} [expiresOn] Representing the expiry time for this SAS token
-     * @param {SasIPRange} [ipRange] Representing the range of valid IP addresses for this SAS token
-     * @param {string} [identifier] Representing the signed identifier (only for Service SAS)
-     * @param {string} [resource] Representing the storage container or blob (only for Service SAS)
-     * @param {string} [cacheControl] Representing the cache-control header (only for Blob/File Service SAS)
-     * @param {string} [contentDisposition] Representing the content-disposition header (only for Blob/File Service SAS)
-     * @param {string} [contentEncoding] Representing the content-encoding header (only for Blob/File Service SAS)
-     * @param {string} [contentLanguage] Representing the content-language header (only for Blob/File Service SAS)
-     * @param {string} [contentType] Representing the content-type header (only for Blob/File Service SAS)
-     * @param {userDelegationKey} [userDelegationKey] Representing the user delegation key properties
-     * @memberof SASQueryParameters
-     */
-    function SASQueryParameters(version, signature, permissions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey) {
-        this.version = version;
-        this.services = services;
-        this.resourceTypes = resourceTypes;
-        this.expiresOn = expiresOn;
-        this.permissions = permissions;
-        this.protocol = protocol;
-        this.startsOn = startsOn;
-        this.ipRangeInner = ipRange;
-        this.identifier = identifier;
-        this.resource = resource;
-        this.signature = signature;
-        this.cacheControl = cacheControl;
-        this.contentDisposition = contentDisposition;
-        this.contentEncoding = contentEncoding;
-        this.contentLanguage = contentLanguage;
-        this.contentType = contentType;
-        if (userDelegationKey) {
-            this.signedOid = userDelegationKey.signedObjectId;
-            this.signedTenantId = userDelegationKey.signedTenantId;
-            this.signedStartsOn = userDelegationKey.signedStartsOn;
-            this.signedExpiresOn = userDelegationKey.signedExpiresOn;
-            this.signedService = userDelegationKey.signedService;
-            this.signedVersion = userDelegationKey.signedVersion;
-        }
-    }
-    Object.defineProperty(SASQueryParameters.prototype, "ipRange", {
-        /**
-         * Optional. IP range allowed for this SAS.
-         *
-         * @readonly
-         * @type {(SasIPRange | undefined)}
-         * @memberof SASQueryParameters
-         */
-        get: function () {
-            if (this.ipRangeInner) {
-                return {
-                    end: this.ipRangeInner.end,
-                    start: this.ipRangeInner.start
-                };
-            }
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    /**
-     * Encodes all SAS query parameters into a string that can be appended to a URL.
-     *
-     * @returns {string}
-     * @memberof SASQueryParameters
-     */
-    SASQueryParameters.prototype.toString = function () {
-        var params = [
-            "sv",
-            "ss",
-            "srt",
-            "spr",
-            "st",
-            "se",
-            "sip",
-            "si",
-            "skoid",
-            "sktid",
-            "skt",
-            "ske",
-            "sks",
-            "skv",
-            "sr",
-            "sp",
-            "sig",
-            "rscc",
-            "rscd",
-            "rsce",
-            "rscl",
-            "rsct"
-        ];
-        var queries = [];
-        for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
-            var param = params_1[_i];
-            switch (param) {
-                case "sv":
-                    this.tryAppendQueryParameter(queries, param, this.version);
-                    break;
-                case "ss":
-                    this.tryAppendQueryParameter(queries, param, this.services);
-                    break;
-                case "srt":
-                    this.tryAppendQueryParameter(queries, param, this.resourceTypes);
-                    break;
-                case "spr":
-                    this.tryAppendQueryParameter(queries, param, this.protocol);
-                    break;
-                case "st":
-                    this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);
-                    break;
-                case "se":
-                    this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);
-                    break;
-                case "sip":
-                    this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);
-                    break;
-                case "si":
-                    this.tryAppendQueryParameter(queries, param, this.identifier);
-                    break;
-                case "skoid": // Signed object ID
-                    this.tryAppendQueryParameter(queries, param, this.signedOid);
-                    break;
-                case "sktid": // Signed tenant ID
-                    this.tryAppendQueryParameter(queries, param, this.signedTenantId);
-                    break;
-                case "skt": // Signed key start time
-                    this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);
-                    break;
-                case "ske": // Signed key expiry time
-                    this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);
-                    break;
-                case "sks": // Signed key service
-                    this.tryAppendQueryParameter(queries, param, this.signedService);
-                    break;
-                case "skv": // Signed key version
-                    this.tryAppendQueryParameter(queries, param, this.signedVersion);
-                    break;
-                case "sr":
-                    this.tryAppendQueryParameter(queries, param, this.resource);
-                    break;
-                case "sp":
-                    this.tryAppendQueryParameter(queries, param, this.permissions);
-                    break;
-                case "sig":
-                    this.tryAppendQueryParameter(queries, param, this.signature);
-                    break;
-                case "rscc":
-                    this.tryAppendQueryParameter(queries, param, this.cacheControl);
-                    break;
-                case "rscd":
-                    this.tryAppendQueryParameter(queries, param, this.contentDisposition);
-                    break;
-                case "rsce":
-                    this.tryAppendQueryParameter(queries, param, this.contentEncoding);
-                    break;
-                case "rscl":
-                    this.tryAppendQueryParameter(queries, param, this.contentLanguage);
-                    break;
-                case "rsct":
-                    this.tryAppendQueryParameter(queries, param, this.contentType);
-                    break;
-            }
-        }
-        return queries.join("&");
-    };
-    /**
-     * A private helper method used to filter and append query key/value pairs into an array.
-     *
-     * @private
-     * @param {string[]} queries
-     * @param {string} key
-     * @param {string} [value]
-     * @returns {void}
-     * @memberof SASQueryParameters
-     */
-    SASQueryParameters.prototype.tryAppendQueryParameter = function (queries, key, value) {
-        if (!value) {
-            return;
-        }
-        key = encodeURIComponent(key);
-        value = encodeURIComponent(value);
-        if (key.length > 0 && value.length > 0) {
-            queries.push(key + "=" + value);
-        }
-    };
-    return SASQueryParameters;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
- * REST request.
- *
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
- *
- * @param {AccountSASSignatureValues} accountSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- * @memberof AccountSASSignatureValues
- */
-function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
-    var version = accountSASSignatureValues.version
-        ? accountSASSignatureValues.version
-        : SERVICE_VERSION;
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.filter &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
-    }
-    var parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
-    var parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
-    var parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
-    var stringToSign = [
-        sharedKeyCredential.accountName,
-        parsedPermissions,
-        parsedServices,
-        parsedResourceTypes,
-        accountSASSignatureValues.startsOn
-            ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)
-            : "",
-        truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),
-        accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : "",
-        accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : "",
-        version,
-        "" // Account SAS requires an additional newline character
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting
- * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
- * the values are set, this should be serialized with toString and set as the permissions field on a
- * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class BlobSASPermissions
- */
-var BlobSASPermissions = /** @class */ (function () {
-    function BlobSASPermissions() {
-        /**
-         * Specifies Read access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.read = false;
-        /**
-         * Specifies Add access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.add = false;
-        /**
-         * Specifies Create access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.create = false;
-        /**
-         * Specifies Write access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.write = false;
-        /**
-         * Specifies Delete access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Specifies Delete version access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.tag = false;
-    }
-    /**
-     * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid permission.
-     *
-     * @static
-     * @param {string} permissions
-     * @returns {BlobSASPermissions}
-     * @memberof BlobSASPermissions
-     */
-    BlobSASPermissions.parse = function (permissions) {
-        var blobSASPermissions = new BlobSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
-            switch (char) {
-                case "r":
-                    blobSASPermissions.read = true;
-                    break;
-                case "a":
-                    blobSASPermissions.add = true;
-                    break;
-                case "c":
-                    blobSASPermissions.create = true;
-                    break;
-                case "w":
-                    blobSASPermissions.write = true;
-                    break;
-                case "d":
-                    blobSASPermissions.delete = true;
-                    break;
-                case "x":
-                    blobSASPermissions.deleteVersion = true;
-                    break;
-                case "t":
-                    blobSASPermissions.tag = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission: " + char);
-            }
-        }
-        return blobSASPermissions;
-    };
-    /**
-     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
-     * order accepted by the service.
-     *
-     * @returns {string} A string which represents the BlobSASPermissions
-     * @memberof BlobSASPermissions
-     */
-    BlobSASPermissions.prototype.toString = function () {
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        return permissions.join("");
-    };
-    return BlobSASPermissions;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.
- * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
- * Once all the values are set, this should be serialized with toString and set as the permissions field on a
- * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class ContainerSASPermissions
- */
-var ContainerSASPermissions = /** @class */ (function () {
-    function ContainerSASPermissions() {
-        /**
-         * Specifies Read access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.read = false;
-        /**
-         * Specifies Add access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.add = false;
-        /**
-         * Specifies Create access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.create = false;
-        /**
-         * Specifies Write access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.write = false;
-        /**
-         * Specifies Delete access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Specifies Delete version access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Specifies List access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.list = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.tag = false;
-    }
-    /**
-     * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid permission.
-     *
-     * @static
-     * @param {string} permissions
-     * @returns {ContainerSASPermissions}
-     * @memberof ContainerSASPermissions
-     */
-    ContainerSASPermissions.parse = function (permissions) {
-        var containerSASPermissions = new ContainerSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
-            switch (char) {
-                case "r":
-                    containerSASPermissions.read = true;
-                    break;
-                case "a":
-                    containerSASPermissions.add = true;
-                    break;
-                case "c":
-                    containerSASPermissions.create = true;
-                    break;
-                case "w":
-                    containerSASPermissions.write = true;
-                    break;
-                case "d":
-                    containerSASPermissions.delete = true;
-                    break;
-                case "l":
-                    containerSASPermissions.list = true;
-                    break;
-                case "t":
-                    containerSASPermissions.tag = true;
-                    break;
-                case "x":
-                    containerSASPermissions.deleteVersion = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission " + char);
-            }
-        }
-        return containerSASPermissions;
-    };
-    /**
-     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
-     * order accepted by the service.
-     *
-     * The order of the characters should be as specified here to ensure correctness.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
-     *
-     * @returns {string}
-     * @memberof ContainerSASPermissions
-     */
-    ContainerSASPermissions.prototype.toString = function () {
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.list) {
-            permissions.push("l");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        return permissions.join("");
-    };
-    return ContainerSASPermissions;
-}());
-
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * UserDelegationKeyCredential is only used for generation of user delegation SAS.
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
- *
- * @export
- * @class UserDelegationKeyCredential
- */
-var UserDelegationKeyCredential = /** @class */ (function () {
-    /**
-     * Creates an instance of UserDelegationKeyCredential.
-     * @param {string} accountName
-     * @param {UserDelegationKey} userDelegationKey
-     * @memberof UserDelegationKeyCredential
-     */
-    function UserDelegationKeyCredential(accountName, userDelegationKey) {
-        this.accountName = accountName;
-        this.userDelegationKey = userDelegationKey;
-        this.key = Buffer.from(userDelegationKey.value, "base64");
-    }
-    /**
-     * Generates a hash signature for an HTTP request or for a SAS.
-     *
-     * @param {string} stringToSign
-     * @returns {string}
-     * @memberof UserDelegationKeyCredential
-     */
-    UserDelegationKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
-        // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
-        return crypto.createHmac("sha256", this.key)
-            .update(stringToSign, "utf8")
-            .digest("base64");
-    };
-    return UserDelegationKeyCredential;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
-        ? sharedKeyCredentialOrUserDelegationKey
-        : undefined;
-    var userDelegationKeyCredential;
-    if (sharedKeyCredential === undefined && accountName !== undefined) {
-        userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
-    }
-    if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {
-        throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.");
-    }
-    // Version 2019-12-12 adds support for the blob tags permission.
-    // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
-    // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
-    if (version >= "2018-11-09") {
-        if (sharedKeyCredential !== undefined) {
-            return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);
-        }
-        else {
-            return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);
-        }
-    }
-    if (version >= "2015-04-05") {
-        if (sharedKeyCredential !== undefined) {
-            return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);
-        }
-        else {
-            throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.");
-        }
-    }
-    throw new RangeError("'version' must be >= '2015-04-05'.");
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: When identifier is not provided, permissions and expiresOn are required.
- * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
- * this constructor.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {
-    if (!blobSASSignatureValues.identifier &&
-        !blobSASSignatureValues.permissions &&
-        !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.snapshotTime) {
-        throw RangeError("'version' must be >= '2018-11-09' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.versionId) {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        blobSASSignatureValues.identifier,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
-        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
-        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
-        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
-        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: When identifier is not provided, permissions and expiresOn are required.
- * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
- * this constructor.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {
-    if (!blobSASSignatureValues.identifier &&
-        !blobSASSignatureValues.permissions &&
-        !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
-        throw RangeError("Must provide 'blobName' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
-        throw RangeError("Must provide 'blobName' when provided 'versionId'.");
-    }
-    var timestamp = blobSASSignatureValues.snapshotTime;
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-        if (blobSASSignatureValues.snapshotTime) {
-            resource = "bs";
-        }
-        else if (blobSASSignatureValues.versionId) {
-            resource = "bv";
-            timestamp = blobSASSignatureValues.versionId;
-        }
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        blobSASSignatureValues.identifier,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        resource,
-        timestamp,
-        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
-        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
-        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
-        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
-        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: identifier will be ignored, permissions and expiresOn are required.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {UserDelegationKeyCredential} userDelegationKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {
-    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
-        throw RangeError("Must provide 'blobName' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
-        throw RangeError("Must provide 'blobName' when provided 'versionId'.");
-    }
-    var timestamp = blobSASSignatureValues.snapshotTime;
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-        if (blobSASSignatureValues.snapshotTime) {
-            resource = "bs";
-        }
-        else if (blobSASSignatureValues.versionId) {
-            resource = "bv";
-            timestamp = blobSASSignatureValues.versionId;
-        }
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        userDelegationKeyCredential.userDelegationKey.signedObjectId,
-        userDelegationKeyCredential.userDelegationKey.signedTenantId,
-        userDelegationKeyCredential.userDelegationKey.signedStartsOn
-            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
-            : "",
-        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
-            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
-            : "",
-        userDelegationKeyCredential.userDelegationKey.signedService,
-        userDelegationKeyCredential.userDelegationKey.signedVersion,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        resource,
-        timestamp,
-        blobSASSignatureValues.cacheControl,
-        blobSASSignatureValues.contentDisposition,
-        blobSASSignatureValues.contentEncoding,
-        blobSASSignatureValues.contentLanguage,
-        blobSASSignatureValues.contentType
-    ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
-}
-function getCanonicalName(accountName, containerName, blobName) {
-    // Container: "/blob/account/containerName"
-    // Blob:      "/blob/account/containerName/blobName"
-    var elements = ["/blob/" + accountName + "/" + containerName];
-    if (blobName) {
-        elements.push("/" + blobName);
-    }
-    return elements.join("");
 }
 
 Object.defineProperty(exports, 'BaseRequestPolicy', {
@@ -33952,6 +33306,7 @@ exports.StorageSharedKeyCredential = StorageSharedKeyCredential;
 exports.StorageSharedKeyCredentialPolicy = StorageSharedKeyCredentialPolicy;
 exports.generateAccountSASQueryParameters = generateAccountSASQueryParameters;
 exports.generateBlobSASQueryParameters = generateBlobSASQueryParameters;
+exports.isPipelineLike = isPipelineLike;
 exports.logger = logger;
 exports.newPipeline = newPipeline;
 //# sourceMappingURL=index.js.map
@@ -33972,10 +33327,33 @@ exports.newPipeline = newPipeline;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const path = __webpack_require__(622);
-const pathHelper = __webpack_require__(972);
+exports.Path = void 0;
+const path = __importStar(__webpack_require__(622));
+const pathHelper = __importStar(__webpack_require__(972));
+const assert_1 = __importDefault(__webpack_require__(357));
 const IS_WINDOWS = process.platform === 'win32';
 /**
  * Helper class for parsing paths into segments
@@ -33989,7 +33367,7 @@ class Path {
         this.segments = [];
         // String
         if (typeof itemPath === 'string') {
-            assert(itemPath, `Parameter 'itemPath' must not be empty`);
+            assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`);
             // Normalize slashes and trim unnecessary trailing slash
             itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
             // Not rooted
@@ -34016,24 +33394,24 @@ class Path {
         // Array
         else {
             // Must not be empty
-            assert(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
+            assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
             // Each segment
             for (let i = 0; i < itemPath.length; i++) {
                 let segment = itemPath[i];
                 // Must not be empty
-                assert(segment, `Parameter 'itemPath' must not contain any empty segments`);
+                assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`);
                 // Normalize slashes
                 segment = pathHelper.normalizeSeparators(itemPath[i]);
                 // Root segment
                 if (i === 0 && pathHelper.hasRoot(segment)) {
                     segment = pathHelper.safeTrimTrailingSeparator(segment);
-                    assert(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
+                    assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
                     this.segments.push(segment);
                 }
                 // All other segments
                 else {
                     // Must not contain slash
-                    assert(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
+                    assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
                     this.segments.push(segment);
                 }
             }
@@ -34107,7 +33485,7 @@ exports.Path = Path;
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-const punycode = __webpack_require__(213);
+const punycode = __webpack_require__(815);
 const urlParse = __webpack_require__(835).parse;
 const util = __webpack_require__(669);
 const pubsuffix = __webpack_require__(562);
@@ -35750,11 +35128,133 @@ exports.PrefixSecurityEnum = PrefixSecurityEnum;
 
 
 /***/ }),
-/* 394 */,
+/* 394 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ProxyTracerProvider = void 0;
+var ProxyTracer_1 = __webpack_require__(398);
+var NoopTracerProvider_1 = __webpack_require__(162);
+var NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();
+/**
+ * Tracer provider which provides {@link ProxyTracer}s.
+ *
+ * Before a delegate is set, tracers provided are NoOp.
+ *   When a delegate is set, traces are provided from the delegate.
+ *   When a delegate is set after tracers have already been provided,
+ *   all tracers already provided will use the provided delegate implementation.
+ */
+var ProxyTracerProvider = /** @class */ (function () {
+    function ProxyTracerProvider() {
+    }
+    /**
+     * Get a {@link ProxyTracer}
+     */
+    ProxyTracerProvider.prototype.getTracer = function (name, version) {
+        var _a;
+        return ((_a = this.getDelegateTracer(name, version)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version));
+    };
+    ProxyTracerProvider.prototype.getDelegate = function () {
+        var _a;
+        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;
+    };
+    /**
+     * Set the delegate tracer provider
+     */
+    ProxyTracerProvider.prototype.setDelegate = function (delegate) {
+        this._delegate = delegate;
+    };
+    ProxyTracerProvider.prototype.getDelegateTracer = function (name, version) {
+        var _a;
+        return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version);
+    };
+    return ProxyTracerProvider;
+}());
+exports.ProxyTracerProvider = ProxyTracerProvider;
+//# sourceMappingURL=ProxyTracerProvider.js.map
+
+/***/ }),
 /* 395 */,
 /* 396 */,
 /* 397 */,
-/* 398 */,
+/* 398 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ProxyTracer = void 0;
+var NoopTracer_1 = __webpack_require__(151);
+var NOOP_TRACER = new NoopTracer_1.NoopTracer();
+/**
+ * Proxy tracer provided by the proxy tracer provider
+ */
+var ProxyTracer = /** @class */ (function () {
+    function ProxyTracer(_provider, name, version) {
+        this._provider = _provider;
+        this.name = name;
+        this.version = version;
+    }
+    ProxyTracer.prototype.startSpan = function (name, options, context) {
+        return this._getTracer().startSpan(name, options, context);
+    };
+    ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {
+        var tracer = this._getTracer();
+        return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
+    };
+    /**
+     * Try to get a tracer from the proxy tracer provider.
+     * If the proxy tracer provider has no delegate, return a noop tracer.
+     */
+    ProxyTracer.prototype._getTracer = function () {
+        if (this._delegate) {
+            return this._delegate;
+        }
+        var tracer = this._provider.getDelegateTracer(this.name, this.version);
+        if (!tracer) {
+            return NOOP_TRACER;
+        }
+        this._delegate = tracer;
+        return this._delegate;
+    };
+    return ProxyTracer;
+}());
+exports.ProxyTracer = ProxyTracer;
+//# sourceMappingURL=ProxyTracer.js.map
+
+/***/ }),
 /* 399 */,
 /* 400 */,
 /* 401 */,
@@ -35789,296 +35289,7 @@ module.exports = require("crypto");
 /* 419 */,
 /* 420 */,
 /* 421 */,
-/* 422 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __createBinding = function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    };
-
-    __exportStar = function (m, exports) {
-        for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
-    };
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-        result["default"] = mod;
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 422 */,
 /* 423 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -36562,7 +35773,62 @@ function parallel(list, iterator, callback)
 
 
 /***/ }),
-/* 425 */,
+/* 425 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NoopContextManager = void 0;
+var context_1 = __webpack_require__(132);
+var NoopContextManager = /** @class */ (function () {
+    function NoopContextManager() {
+    }
+    NoopContextManager.prototype.active = function () {
+        return context_1.ROOT_CONTEXT;
+    };
+    NoopContextManager.prototype.with = function (_context, fn, thisArg) {
+        var args = [];
+        for (var _i = 3; _i < arguments.length; _i++) {
+            args[_i - 3] = arguments[_i];
+        }
+        return fn.call.apply(fn, __spreadArray([thisArg], args));
+    };
+    NoopContextManager.prototype.bind = function (_context, target) {
+        return target;
+    };
+    NoopContextManager.prototype.enable = function () {
+        return this;
+    };
+    NoopContextManager.prototype.disable = function () {
+        return this;
+    };
+    return NoopContextManager;
+}());
+exports.NoopContextManager = NoopContextManager;
+//# sourceMappingURL=NoopContextManager.js.map
+
+/***/ }),
 /* 426 */,
 /* 427 */,
 /* 428 */,
@@ -36573,14 +35839,27 @@ function parallel(list, iterator, callback)
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
     return result;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.issue = exports.issueCommand = void 0;
 const os = __importStar(__webpack_require__(87));
 const utils_1 = __webpack_require__(82);
 /**
@@ -36685,20 +35964,33 @@ const utils = __importStar(__webpack_require__(15));
 const constants_1 = __webpack_require__(931);
 function getTarPath(args, compressionMethod) {
     return __awaiter(this, void 0, void 0, function* () {
-        const IS_WINDOWS = process.platform === 'win32';
-        if (IS_WINDOWS) {
-            const systemTar = `${process.env['windir']}\\System32\\tar.exe`;
-            if (compressionMethod !== constants_1.CompressionMethod.Gzip) {
-                // We only use zstandard compression on windows when gnu tar is installed due to
-                // a bug with compressing large files with bsdtar + zstd
-                args.push('--force-local');
+        switch (process.platform) {
+            case 'win32': {
+                const systemTar = `${process.env['windir']}\\System32\\tar.exe`;
+                if (compressionMethod !== constants_1.CompressionMethod.Gzip) {
+                    // We only use zstandard compression on windows when gnu tar is installed due to
+                    // a bug with compressing large files with bsdtar + zstd
+                    args.push('--force-local');
+                }
+                else if (fs_1.existsSync(systemTar)) {
+                    return systemTar;
+                }
+                else if (yield utils.isGnuTarInstalled()) {
+                    args.push('--force-local');
+                }
+                break;
             }
-            else if (fs_1.existsSync(systemTar)) {
-                return systemTar;
-            }
-            else if (yield utils.isGnuTarInstalled()) {
-                args.push('--force-local');
+            case 'darwin': {
+                const gnuTar = yield io.which('gtar', false);
+                if (gnuTar) {
+                    // fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527
+                    args.push('--delay-directory-restore');
+                    return gnuTar;
+                }
+                break;
             }
+            default:
+                break;
         }
         return yield io.which('tar', true);
     });
@@ -36783,12 +36075,140 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) {
     });
 }
 exports.createTar = createTar;
+function listTar(archivePath, compressionMethod) {
+    return __awaiter(this, void 0, void 0, function* () {
+        // --d: Decompress.
+        // --long=#: Enables long distance matching with # bits.
+        // Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
+        // Using 30 here because we also support 32-bit self-hosted runners.
+        function getCompressionProgram() {
+            switch (compressionMethod) {
+                case constants_1.CompressionMethod.Zstd:
+                    return ['--use-compress-program', 'zstd -d --long=30'];
+                case constants_1.CompressionMethod.ZstdWithoutLong:
+                    return ['--use-compress-program', 'zstd -d'];
+                default:
+                    return ['-z'];
+            }
+        }
+        const args = [
+            ...getCompressionProgram(),
+            '-tf',
+            archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
+            '-P'
+        ];
+        yield execTar(args, compressionMethod);
+    });
+}
+exports.listTar = listTar;
 //# sourceMappingURL=tar.js.map
 
 /***/ }),
-/* 435 */,
+/* 435 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+var trace_flags_1 = __webpack_require__(975);
+exports.INVALID_SPANID = '0000000000000000';
+exports.INVALID_TRACEID = '00000000000000000000000000000000';
+exports.INVALID_SPAN_CONTEXT = {
+    traceId: exports.INVALID_TRACEID,
+    spanId: exports.INVALID_SPANID,
+    traceFlags: trace_flags_1.TraceFlags.NONE,
+};
+//# sourceMappingURL=invalid-span-constants.js.map
+
+/***/ }),
 /* 436 */,
-/* 437 */,
+/* 437 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NonRecordingSpan = void 0;
+var invalid_span_constants_1 = __webpack_require__(435);
+/**
+ * The NonRecordingSpan is the default {@link Span} that is used when no Span
+ * implementation is available. All operations are no-op including context
+ * propagation.
+ */
+var NonRecordingSpan = /** @class */ (function () {
+    function NonRecordingSpan(_spanContext) {
+        if (_spanContext === void 0) { _spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT; }
+        this._spanContext = _spanContext;
+    }
+    // Returns a SpanContext.
+    NonRecordingSpan.prototype.spanContext = function () {
+        return this._spanContext;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttribute = function (_key, _value) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttributes = function (_attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setStatus = function (_status) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.updateName = function (_name) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.end = function (_endTime) { };
+    // isRecording always returns false for NonRecordingSpan.
+    NonRecordingSpan.prototype.isRecording = function () {
+        return false;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.recordException = function (_exception, _time) { };
+    return NonRecordingSpan;
+}());
+exports.NonRecordingSpan = NonRecordingSpan;
+//# sourceMappingURL=NonRecordingSpan.js.map
+
+/***/ }),
 /* 438 */,
 /* 439 */,
 /* 440 */
@@ -36819,35 +36239,21 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.propagation = exports.metrics = exports.trace = exports.context = void 0;
-__exportStar(__webpack_require__(276), exports);
+exports.diag = exports.propagation = exports.trace = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.baggageEntryMetadataFromString = void 0;
+__exportStar(__webpack_require__(880), exports);
+var utils_1 = __webpack_require__(112);
+Object.defineProperty(exports, "baggageEntryMetadataFromString", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });
+__exportStar(__webpack_require__(452), exports);
 __exportStar(__webpack_require__(158), exports);
-__exportStar(__webpack_require__(2), exports);
-__exportStar(__webpack_require__(33), exports);
-__exportStar(__webpack_require__(744), exports);
-__exportStar(__webpack_require__(753), exports);
-__exportStar(__webpack_require__(278), exports);
-__exportStar(__webpack_require__(40), exports);
-__exportStar(__webpack_require__(318), exports);
-__exportStar(__webpack_require__(551), exports);
-__exportStar(__webpack_require__(659), exports);
-__exportStar(__webpack_require__(702), exports);
-__exportStar(__webpack_require__(43), exports);
-__exportStar(__webpack_require__(625), exports);
-__exportStar(__webpack_require__(450), exports);
-__exportStar(__webpack_require__(107), exports);
-__exportStar(__webpack_require__(189), exports);
+__exportStar(__webpack_require__(893), exports);
+__exportStar(__webpack_require__(881), exports);
 __exportStar(__webpack_require__(906), exports);
-__exportStar(__webpack_require__(727), exports);
-__exportStar(__webpack_require__(165), exports);
-__exportStar(__webpack_require__(851), exports);
 __exportStar(__webpack_require__(95), exports);
-__exportStar(__webpack_require__(767), exports);
-__exportStar(__webpack_require__(151), exports);
-__exportStar(__webpack_require__(162), exports);
+__exportStar(__webpack_require__(398), exports);
+__exportStar(__webpack_require__(394), exports);
 __exportStar(__webpack_require__(781), exports);
 __exportStar(__webpack_require__(340), exports);
 __exportStar(__webpack_require__(607), exports);
@@ -36855,30 +36261,42 @@ __exportStar(__webpack_require__(670), exports);
 __exportStar(__webpack_require__(586), exports);
 __exportStar(__webpack_require__(220), exports);
 __exportStar(__webpack_require__(932), exports);
-__exportStar(__webpack_require__(839), exports);
 __exportStar(__webpack_require__(975), exports);
-__exportStar(__webpack_require__(70), exports);
+__exportStar(__webpack_require__(207), exports);
 __exportStar(__webpack_require__(694), exports);
 __exportStar(__webpack_require__(695), exports);
-var context_base_1 = __webpack_require__(231);
-Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_base_1.Context; } });
+var spancontext_utils_1 = __webpack_require__(629);
+Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });
+Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });
+Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });
+var invalid_span_constants_1 = __webpack_require__(435);
+Object.defineProperty(exports, "INVALID_SPANID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });
+Object.defineProperty(exports, "INVALID_TRACEID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });
+Object.defineProperty(exports, "INVALID_SPAN_CONTEXT", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });
+__exportStar(__webpack_require__(132), exports);
+__exportStar(__webpack_require__(845), exports);
 var context_1 = __webpack_require__(492);
 /** Entrypoint for context API */
 exports.context = context_1.ContextAPI.getInstance();
 var trace_1 = __webpack_require__(875);
 /** Entrypoint for trace API */
 exports.trace = trace_1.TraceAPI.getInstance();
-var metrics_1 = __webpack_require__(136);
-/** Entrypoint for metrics API */
-exports.metrics = metrics_1.MetricsAPI.getInstance();
 var propagation_1 = __webpack_require__(22);
 /** Entrypoint for propagation API */
 exports.propagation = propagation_1.PropagationAPI.getInstance();
+var diag_1 = __webpack_require__(118);
+/**
+ * Entrypoint for Diag API.
+ * Defines Diagnostic handler used for internal diagnostic logging operations.
+ * The default provides a Noop DiagLogger implementation which may be changed via the
+ * diag.setLogger(logger: DiagLogger) function.
+ */
+exports.diag = diag_1.DiagAPI.instance();
 exports.default = {
     trace: exports.trace,
-    metrics: exports.metrics,
     context: exports.context,
     propagation: exports.propagation,
+    diag: exports.diag,
 };
 //# sourceMappingURL=index.js.map
 
@@ -36905,7 +36323,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
     __setModuleDefault(result, mod);
     return result;
 };
@@ -36963,7 +36381,7 @@ function getInputAsArray(name, options) {
     return core
         .getInput(name, options)
         .split("\n")
-        .map(s => s.replace(/^\!\s+/, '!').trim())
+        .map(s => s.replace(/^!\s+/, "!").trim())
         .filter(x => x !== "")
         .sort();
 }
@@ -36985,46 +36403,7 @@ exports.getInputAsInt = getInputAsInt;
 /* 447 */,
 /* 448 */,
 /* 449 */,
-/* 450 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;
-var NoopMeter_1 = __webpack_require__(625);
-/**
- * An implementation of the {@link MeterProvider} which returns an impotent Meter
- * for all calls to `getMeter`
- */
-var NoopMeterProvider = /** @class */ (function () {
-    function NoopMeterProvider() {
-    }
-    NoopMeterProvider.prototype.getMeter = function (_name, _version) {
-        return NoopMeter_1.NOOP_METER;
-    };
-    return NoopMeterProvider;
-}());
-exports.NoopMeterProvider = NoopMeterProvider;
-exports.NOOP_METER_PROVIDER = new NoopMeterProvider();
-//# sourceMappingURL=NoopMeterProvider.js.map
-
-/***/ }),
+/* 450 */,
 /* 451 */
 /***/ (function(module) {
 
@@ -37089,7 +36468,30 @@ exports.NOOP_METER_PROVIDER = new NoopMeterProvider();
 
 
 /***/ }),
-/* 452 */,
+/* 452 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=Exception.js.map
+
+/***/ }),
 /* 453 */,
 /* 454 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -37104,6 +36506,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
 var Stream = _interopDefault(__webpack_require__(794));
 var http = _interopDefault(__webpack_require__(605));
 var Url = _interopDefault(__webpack_require__(835));
+var whatwgUrl = _interopDefault(__webpack_require__(70));
 var https = _interopDefault(__webpack_require__(211));
 var zlib = _interopDefault(__webpack_require__(761));
 
@@ -38238,11 +37641,32 @@ Object.defineProperty(Response.prototype, Symbol.toStringTag, {
 });
 
 const INTERNALS$2 = Symbol('Request internals');
+const URL = Url.URL || whatwgUrl.URL;
 
 // fix an issue where "format", "parse" aren't a named export for node <10
 const parse_url = Url.parse;
 const format_url = Url.format;
 
+/**
+ * Wrapper around `new URL` to handle arbitrary URLs
+ *
+ * @param  {string} urlStr
+ * @return {void}
+ */
+function parseURL(urlStr) {
+	/*
+ 	Check whether the URL is absolute or not
+ 		Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ 	Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+	if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+		urlStr = new URL(urlStr).toString();
+	}
+
+	// Fallback to old implementation for arbitrary URLs
+	return parse_url(urlStr);
+}
+
 const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
 
 /**
@@ -38279,14 +37703,14 @@ class Request {
 				// in order to support Node.js' Url objects; though WHATWG's URL objects
 				// will fall into this branch also (since their `toString()` will return
 				// `href` property anyway)
-				parsedURL = parse_url(input.href);
+				parsedURL = parseURL(input.href);
 			} else {
 				// coerce input to a string before attempting to parse
-				parsedURL = parse_url(`${input}`);
+				parsedURL = parseURL(`${input}`);
 			}
 			input = {};
 		} else {
-			parsedURL = parse_url(input.url);
+			parsedURL = parseURL(input.url);
 		}
 
 		let method = init.method || input.method || 'GET';
@@ -38998,6 +38422,25 @@ module.exports = '4.0.0'
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -39007,19 +38450,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
 const command_1 = __webpack_require__(431);
 const file_command_1 = __webpack_require__(102);
 const utils_1 = __webpack_require__(82);
 const os = __importStar(__webpack_require__(87));
 const path = __importStar(__webpack_require__(622));
+const oidc_utils_1 = __webpack_require__(742);
 /**
  * The code to exit an action
  */
@@ -39081,7 +38519,9 @@ function addPath(inputPath) {
 }
 exports.addPath = addPath;
 /**
- * Gets the value of an input.  The value is also trimmed.
+ * Gets the value of an input.
+ * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
+ * Returns an empty string if the value is not defined.
  *
  * @param     name     name of the input to get
  * @param     options  optional. See InputOptions.
@@ -39092,9 +38532,49 @@ function getInput(name, options) {
     if (options && options.required && !val) {
         throw new Error(`Input required and not supplied: ${name}`);
     }
+    if (options && options.trimWhitespace === false) {
+        return val;
+    }
     return val.trim();
 }
 exports.getInput = getInput;
+/**
+ * Gets the values of an multiline input.  Each value is also trimmed.
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   string[]
+ *
+ */
+function getMultilineInput(name, options) {
+    const inputs = getInput(name, options)
+        .split('\n')
+        .filter(x => x !== '');
+    return inputs;
+}
+exports.getMultilineInput = getMultilineInput;
+/**
+ * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
+ * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
+ * The return value is also in boolean type.
+ * ref: https://yaml.org/spec/1.2/spec.html#id2804923
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   boolean
+ */
+function getBooleanInput(name, options) {
+    const trueValue = ['true', 'True', 'TRUE'];
+    const falseValue = ['false', 'False', 'FALSE'];
+    const val = getInput(name, options);
+    if (trueValue.includes(val))
+        return true;
+    if (falseValue.includes(val))
+        return false;
+    throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` +
+        `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
+}
+exports.getBooleanInput = getBooleanInput;
 /**
  * Sets the value of an output.
  *
@@ -39103,6 +38583,7 @@ exports.getInput = getInput;
  */
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 function setOutput(name, value) {
+    process.stdout.write(os.EOL);
     command_1.issueCommand('set-output', { name }, value);
 }
 exports.setOutput = setOutput;
@@ -39149,19 +38630,30 @@ exports.debug = debug;
 /**
  * Adds an error issue
  * @param message error issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
  */
-function error(message) {
-    command_1.issue('error', message instanceof Error ? message.toString() : message);
+function error(message, properties = {}) {
+    command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
 }
 exports.error = error;
 /**
- * Adds an warning issue
+ * Adds a warning issue
  * @param message warning issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
  */
-function warning(message) {
-    command_1.issue('warning', message instanceof Error ? message.toString() : message);
+function warning(message, properties = {}) {
+    command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
 }
 exports.warning = warning;
+/**
+ * Adds a notice issue
+ * @param message notice issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
+ */
+function notice(message, properties = {}) {
+    command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
+}
+exports.notice = notice;
 /**
  * Writes info to log with console.log.
  * @param message info message
@@ -39234,6 +38726,12 @@ function getState(name) {
     return process.env[`STATE_${name}`] || '';
 }
 exports.getState = getState;
+function getIDToken(aud) {
+    return __awaiter(this, void 0, void 0, function* () {
+        return yield oidc_utils_1.OidcClient.getIDToken(aud);
+    });
+}
+exports.getIDToken = getIDToken;
 //# sourceMappingURL=core.js.map
 
 /***/ }),
@@ -39380,8 +38878,71 @@ exports.getState = getState;
 /* 479 */,
 /* 480 */,
 /* 481 */,
-/* 482 */,
-/* 483 */,
+/* 482 */
+/***/ (function(module) {
+
+module.exports = [[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]];
+
+/***/ }),
+/* 483 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.deleteBaggage = exports.setBaggage = exports.getBaggage = void 0;
+var context_1 = __webpack_require__(132);
+/**
+ * Baggage key
+ */
+var BAGGAGE_KEY = context_1.createContextKey('OpenTelemetry Baggage Key');
+/**
+ * Retrieve the current baggage from the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @returns {Baggage} Extracted baggage from the context
+ */
+function getBaggage(context) {
+    return context.getValue(BAGGAGE_KEY) || undefined;
+}
+exports.getBaggage = getBaggage;
+/**
+ * Store a baggage in the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @param {Baggage} baggage that will be set in the actual context
+ */
+function setBaggage(context, baggage) {
+    return context.setValue(BAGGAGE_KEY, baggage);
+}
+exports.setBaggage = setBaggage;
+/**
+ * Delete the baggage stored in the given context
+ *
+ * @param {Context} Context that manage all context values
+ */
+function deleteBaggage(context) {
+    return context.deleteValue(BAGGAGE_KEY);
+}
+exports.deleteBaggage = deleteBaggage;
+//# sourceMappingURL=context-helpers.js.map
+
+/***/ }),
 /* 484 */,
 /* 485 */,
 /* 486 */,
@@ -39464,11 +39025,18 @@ exports.getState = getState;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ContextAPI = void 0;
-var context_base_1 = __webpack_require__(231);
-var global_utils_1 = __webpack_require__(976);
-var NOOP_CONTEXT_MANAGER = new context_base_1.NoopContextManager();
+var NoopContextManager_1 = __webpack_require__(425);
+var global_utils_1 = __webpack_require__(525);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'context';
+var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Context API
  */
@@ -39484,15 +39052,12 @@ var ContextAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current context manager. Returns the initialized context manager
+     * Set the current context manager.
+     *
+     * @returns true if the context manager was successfully registered, else false
      */
     ContextAPI.prototype.setGlobalContextManager = function (contextManager) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY]) {
-            // global context manager has already been set
-            return this._getContextManager();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, contextManager, NOOP_CONTEXT_MANAGER);
-        return contextManager;
+        return global_utils_1.registerGlobal(API_NAME, contextManager, diag_1.DiagAPI.instance());
     };
     /**
      * Get the currently active context
@@ -39505,28 +39070,33 @@ var ContextAPI = /** @class */ (function () {
      *
      * @param context context to be active during function execution
      * @param fn function to execute in a context
+     * @param thisArg optional receiver to be used for calling fn
+     * @param args optional arguments forwarded to fn
      */
-    ContextAPI.prototype.with = function (context, fn) {
-        return this._getContextManager().with(context, fn);
+    ContextAPI.prototype.with = function (context, fn, thisArg) {
+        var _a;
+        var args = [];
+        for (var _i = 3; _i < arguments.length; _i++) {
+            args[_i - 3] = arguments[_i];
+        }
+        return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], args));
     };
     /**
      * Bind a context to a target function or event emitter
      *
-     * @param target function or event emitter to bind
      * @param context context to bind to the event emitter or function. Defaults to the currently active context
+     * @param target function or event emitter to bind
      */
-    ContextAPI.prototype.bind = function (target, context) {
-        if (context === void 0) { context = this.active(); }
-        return this._getContextManager().bind(target, context);
+    ContextAPI.prototype.bind = function (context, target) {
+        return this._getContextManager().bind(context, target);
     };
     ContextAPI.prototype._getContextManager = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NOOP_CONTEXT_MANAGER);
+        return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;
     };
     /** Disable and remove the global context manager */
     ContextAPI.prototype.disable = function () {
         this._getContextManager().disable();
-        delete global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     return ContextAPI;
 }());
@@ -39587,10 +39157,79 @@ function defer(fn)
 
 "use strict";
 
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-Object.defineProperty(exports, "__esModule", { value: true });
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
 __webpack_require__(71);
+var tslib = __webpack_require__(671);
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * returns an async iterator that iterates over results. It also has a `byPage`
+ * method that returns pages of items at once.
+ *
+ * @param pagedResult - an object that specifies how to get pages.
+ * @returns a paged async iterator that iterates over results.
+ */
+function getPagedAsyncIterator(pagedResult) {
+    var _a;
+    const iter = getItemAsyncIterator(pagedResult);
+    return {
+        next() {
+            return iter.next();
+        },
+        [Symbol.asyncIterator]() {
+            return this;
+        },
+        byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => {
+            return getPageAsyncIterator(pagedResult, settings === null || settings === void 0 ? void 0 : settings.maxPageSize);
+        })
+    };
+}
+function getItemAsyncIterator(pagedResult, maxPageSize) {
+    return tslib.__asyncGenerator(this, arguments, function* getItemAsyncIterator_1() {
+        var e_1, _a;
+        const pages = getPageAsyncIterator(pagedResult, maxPageSize);
+        const firstVal = yield tslib.__await(pages.next());
+        // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
+        if (!Array.isArray(firstVal.value)) {
+            yield yield tslib.__await(firstVal.value);
+            // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
+            yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(pages)));
+        }
+        else {
+            yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(firstVal.value)));
+            try {
+                for (var pages_1 = tslib.__asyncValues(pages), pages_1_1; pages_1_1 = yield tslib.__await(pages_1.next()), !pages_1_1.done;) {
+                    const page = pages_1_1.value;
+                    // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
+                    // it must be the case that `TPage = TElement[]`
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));
+                }
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (pages_1_1 && !pages_1_1.done && (_a = pages_1.return)) yield tslib.__await(_a.call(pages_1));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
+        }
+    });
+}
+function getPageAsyncIterator(pagedResult, maxPageSize) {
+    return tslib.__asyncGenerator(this, arguments, function* getPageAsyncIterator_1() {
+        let response = yield tslib.__await(pagedResult.getPage(pagedResult.firstPageLink, maxPageSize));
+        yield yield tslib.__await(response.page);
+        while (response.nextPageLink) {
+            response = yield tslib.__await(pagedResult.getPage(response.nextPageLink, maxPageSize));
+            yield yield tslib.__await(response.page);
+        }
+    });
+}
+
+exports.getPagedAsyncIterator = getPagedAsyncIterator;
+//# sourceMappingURL=index.js.map
 
 
 /***/ }),
@@ -39598,7 +39237,7 @@ __webpack_require__(71);
 /* 512 */
 /***/ (function(module) {
 
-module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/mrb-publish+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["keynote"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana"},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}};
+module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}};
 
 /***/ }),
 /* 513 */,
@@ -39719,7 +39358,77 @@ module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"appl
 
 
 /***/ }),
-/* 525 */,
+/* 525 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;
+var platform_1 = __webpack_require__(910);
+var version_1 = __webpack_require__(830);
+var semver_1 = __webpack_require__(987);
+var major = version_1.VERSION.split('.')[0];
+var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("opentelemetry.js.api." + major);
+var _global = platform_1._globalThis;
+function registerGlobal(type, instance, diag, allowOverride) {
+    var _a;
+    if (allowOverride === void 0) { allowOverride = false; }
+    var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
+        version: version_1.VERSION,
+    });
+    if (!allowOverride && api[type]) {
+        // already registered an API of this type
+        var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type);
+        diag.error(err.stack || err.message);
+        return false;
+    }
+    if (api.version !== version_1.VERSION) {
+        // All registered APIs must be of the same version exactly
+        var err = new Error('@opentelemetry/api: All API registration versions must match');
+        diag.error(err.stack || err.message);
+        return false;
+    }
+    api[type] = instance;
+    diag.debug("@opentelemetry/api: Registered a global for " + type + " v" + version_1.VERSION + ".");
+    return true;
+}
+exports.registerGlobal = registerGlobal;
+function getGlobal(type) {
+    var _a, _b;
+    var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;
+    if (!globalVersion || !semver_1.isCompatible(globalVersion)) {
+        return;
+    }
+    return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];
+}
+exports.getGlobal = getGlobal;
+function unregisterGlobal(type, diag) {
+    diag.debug("@opentelemetry/api: Unregistering a global for " + type + " v" + version_1.VERSION + ".");
+    var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
+    if (api) {
+        delete api[type];
+    }
+}
+exports.unregisterGlobal = unregisterGlobal;
+//# sourceMappingURL=global-utils.js.map
+
+/***/ }),
 /* 526 */,
 /* 527 */,
 /* 528 */,
@@ -40233,7 +39942,9 @@ class HttpClient {
                 maxSockets: maxSockets,
                 keepAlive: this._keepAlive,
                 proxy: {
-                    proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`,
+                    ...((proxyUrl.username || proxyUrl.password) && {
+                        proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
+                    }),
                     host: proxyUrl.hostname,
                     port: proxyUrl.port
                 }
@@ -40362,7 +40073,56 @@ exports.HttpClient = HttpClient;
 /* 542 */,
 /* 543 */,
 /* 544 */,
-/* 545 */,
+/* 545 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagLogLevel = void 0;
+/**
+ * Defines the available internal logging levels for the diagnostic logger, the numeric values
+ * of the levels are defined to match the original values from the initial LogLevel to avoid
+ * compatibility/migration issues for any implementation that assume the numeric ordering.
+ */
+var DiagLogLevel;
+(function (DiagLogLevel) {
+    /** Diagnostic Logging level setting to disable all logging (except and forced logs) */
+    DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE";
+    /** Identifies an error scenario */
+    DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR";
+    /** Identifies a warning scenario */
+    DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN";
+    /** General informational log message */
+    DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO";
+    /** General debug log message */
+    DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG";
+    /**
+     * Detailed trace level logging should only be used for development, should only be set
+     * in a development environment.
+     */
+    DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE";
+    /** Used to set the logging level to include all logging */
+    DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL";
+})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));
+//# sourceMappingURL=types.js.map
+
+/***/ }),
 /* 546 */,
 /* 547 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
@@ -40581,30 +40341,7 @@ CombinedStream.prototype._emitError = function(err) {
 /* 548 */,
 /* 549 */,
 /* 550 */,
-/* 551 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=BoundInstrument.js.map
-
-/***/ }),
+/* 551 */,
 /* 552 */,
 /* 553 */,
 /* 554 */,
@@ -40894,7 +40631,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
 
 /***/ }),
 /* 560 */,
-/* 561 */,
+/* 561 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.baggageEntryMetadataSymbol = void 0;
+/**
+ * Symbol used to make BaggageEntryMetadata an opaque type
+ */
+exports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');
+//# sourceMappingURL=symbol.js.map
+
+/***/ }),
 /* 562 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
@@ -41208,8 +40973,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const pathHelper = __webpack_require__(972);
+exports.partialMatch = exports.match = exports.getSearchPaths = void 0;
+const pathHelper = __importStar(__webpack_require__(972));
 const internal_match_kind_1 = __webpack_require__(327);
 const IS_WINDOWS = process.platform === 'win32';
 /**
@@ -41291,8 +41076,28 @@ exports.partialMatch = partialMatch;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const core = __webpack_require__(470);
+exports.getOptions = void 0;
+const core = __importStar(__webpack_require__(470));
 /**
  * Returns a copy with defaults filled in.
  */
@@ -41643,7 +41448,318 @@ Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=span_context.js.map
 
 /***/ }),
-/* 608 */,
+/* 608 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 609 */,
 /* 610 */,
 /* 611 */,
@@ -41723,6 +41839,9 @@ function range(a, b, str) {
   var i = ai;
 
   if (ai >= 0 && bi > 0) {
+    if(a===b) {
+      return [ai, bi];
+    }
     begs = [];
     left = str.length;
 
@@ -41763,11 +41882,17 @@ module.exports = require("path");
 /***/ }),
 /* 623 */,
 /* 624 */,
-/* 625 */
-/***/ (function(__unusedmodule, exports) {
+/* 625 */,
+/* 626 */,
+/* 627 */,
+/* 628 */,
+/* 629 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;
 /*
  * Copyright The OpenTelemetry Authors
  *
@@ -41783,196 +41908,39 @@ module.exports = require("path");
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __extends = (this && this.__extends) || (function () {
-    var extendStatics = function (d, b) {
-        extendStatics = Object.setPrototypeOf ||
-            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-        return extendStatics(d, b);
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-})();
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_BATCH_OBSERVER_METRIC = exports.NOOP_SUM_OBSERVER_METRIC = exports.NOOP_UP_DOWN_SUM_OBSERVER_METRIC = exports.NOOP_VALUE_OBSERVER_METRIC = exports.NOOP_BOUND_BASE_OBSERVER = exports.NOOP_VALUE_RECORDER_METRIC = exports.NOOP_BOUND_VALUE_RECORDER = exports.NOOP_COUNTER_METRIC = exports.NOOP_BOUND_COUNTER = exports.NOOP_METER = exports.NoopBoundBaseObserver = exports.NoopBoundValueRecorder = exports.NoopBoundCounter = exports.NoopBatchObserverMetric = exports.NoopBaseObserverMetric = exports.NoopValueRecorderMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;
+var invalid_span_constants_1 = __webpack_require__(435);
+var NonRecordingSpan_1 = __webpack_require__(437);
+var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;
+var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;
+function isValidTraceId(traceId) {
+    return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;
+}
+exports.isValidTraceId = isValidTraceId;
+function isValidSpanId(spanId) {
+    return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;
+}
+exports.isValidSpanId = isValidSpanId;
 /**
- * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses
- * constant NoopMetrics for all of its methods.
+ * Returns true if this {@link SpanContext} is valid.
+ * @return true if this {@link SpanContext} is valid.
  */
-var NoopMeter = /** @class */ (function () {
-    function NoopMeter() {
-    }
-    /**
-     * Returns constant noop value recorder.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createValueRecorder = function (name, options) {
-        return exports.NOOP_VALUE_RECORDER_METRIC;
-    };
-    /**
-     * Returns a constant noop counter.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createCounter = function (name, options) {
-        return exports.NOOP_COUNTER_METRIC;
-    };
-    /**
-     * Returns a constant noop UpDownCounter.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createUpDownCounter = function (name, options) {
-        return exports.NOOP_COUNTER_METRIC;
-    };
-    /**
-     * Returns constant noop value observer.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     * @param [callback] the value observer callback
-     */
-    NoopMeter.prototype.createValueObserver = function (name, options, callback) {
-        return exports.NOOP_VALUE_OBSERVER_METRIC;
-    };
-    /**
-     * Returns constant noop batch observer.
-     * @param name the name of the metric.
-     * @param callback the batch observer callback
-     */
-    NoopMeter.prototype.createBatchObserver = function (name, callback) {
-        return exports.NOOP_BATCH_OBSERVER_METRIC;
-    };
-    return NoopMeter;
-}());
-exports.NoopMeter = NoopMeter;
-var NoopMetric = /** @class */ (function () {
-    function NoopMetric(instrument) {
-        this._instrument = instrument;
-    }
-    /**
-     * Returns a Bound Instrument associated with specified Labels.
-     * It is recommended to keep a reference to the Bound Instrument instead of
-     * always calling this method for every operations.
-     * @param labels key-values pairs that are associated with a specific metric
-     *     that you want to record.
-     */
-    NoopMetric.prototype.bind = function (labels) {
-        return this._instrument;
-    };
-    /**
-     * Removes the Binding from the metric, if it is present.
-     * @param labels key-values pairs that are associated with a specific metric.
-     */
-    NoopMetric.prototype.unbind = function (labels) {
-        return;
-    };
-    /**
-     * Clears all timeseries from the Metric.
-     */
-    NoopMetric.prototype.clear = function () {
-        return;
-    };
-    return NoopMetric;
-}());
-exports.NoopMetric = NoopMetric;
-var NoopCounterMetric = /** @class */ (function (_super) {
-    __extends(NoopCounterMetric, _super);
-    function NoopCounterMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopCounterMetric.prototype.add = function (value, labels) {
-        this.bind(labels).add(value);
-    };
-    return NoopCounterMetric;
-}(NoopMetric));
-exports.NoopCounterMetric = NoopCounterMetric;
-var NoopValueRecorderMetric = /** @class */ (function (_super) {
-    __extends(NoopValueRecorderMetric, _super);
-    function NoopValueRecorderMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopValueRecorderMetric.prototype.record = function (value, labels, correlationContext, spanContext) {
-        if (typeof correlationContext === 'undefined') {
-            this.bind(labels).record(value);
-        }
-        else if (typeof spanContext === 'undefined') {
-            this.bind(labels).record(value, correlationContext);
-        }
-        else {
-            this.bind(labels).record(value, correlationContext, spanContext);
-        }
-    };
-    return NoopValueRecorderMetric;
-}(NoopMetric));
-exports.NoopValueRecorderMetric = NoopValueRecorderMetric;
-var NoopBaseObserverMetric = /** @class */ (function (_super) {
-    __extends(NoopBaseObserverMetric, _super);
-    function NoopBaseObserverMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopBaseObserverMetric.prototype.observation = function () {
-        return {
-            observer: this,
-            value: 0,
-        };
-    };
-    return NoopBaseObserverMetric;
-}(NoopMetric));
-exports.NoopBaseObserverMetric = NoopBaseObserverMetric;
-var NoopBatchObserverMetric = /** @class */ (function (_super) {
-    __extends(NoopBatchObserverMetric, _super);
-    function NoopBatchObserverMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    return NoopBatchObserverMetric;
-}(NoopMetric));
-exports.NoopBatchObserverMetric = NoopBatchObserverMetric;
-var NoopBoundCounter = /** @class */ (function () {
-    function NoopBoundCounter() {
-    }
-    NoopBoundCounter.prototype.add = function (value) {
-        return;
-    };
-    return NoopBoundCounter;
-}());
-exports.NoopBoundCounter = NoopBoundCounter;
-var NoopBoundValueRecorder = /** @class */ (function () {
-    function NoopBoundValueRecorder() {
-    }
-    NoopBoundValueRecorder.prototype.record = function (value, correlationContext, spanContext) {
-        return;
-    };
-    return NoopBoundValueRecorder;
-}());
-exports.NoopBoundValueRecorder = NoopBoundValueRecorder;
-var NoopBoundBaseObserver = /** @class */ (function () {
-    function NoopBoundBaseObserver() {
-    }
-    NoopBoundBaseObserver.prototype.update = function (value) { };
-    return NoopBoundBaseObserver;
-}());
-exports.NoopBoundBaseObserver = NoopBoundBaseObserver;
-exports.NOOP_METER = new NoopMeter();
-exports.NOOP_BOUND_COUNTER = new NoopBoundCounter();
-exports.NOOP_COUNTER_METRIC = new NoopCounterMetric(exports.NOOP_BOUND_COUNTER);
-exports.NOOP_BOUND_VALUE_RECORDER = new NoopBoundValueRecorder();
-exports.NOOP_VALUE_RECORDER_METRIC = new NoopValueRecorderMetric(exports.NOOP_BOUND_VALUE_RECORDER);
-exports.NOOP_BOUND_BASE_OBSERVER = new NoopBoundBaseObserver();
-exports.NOOP_VALUE_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_UP_DOWN_SUM_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_SUM_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_BATCH_OBSERVER_METRIC = new NoopBatchObserverMetric();
-//# sourceMappingURL=NoopMeter.js.map
+function isSpanContextValid(spanContext) {
+    return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));
+}
+exports.isSpanContextValid = isSpanContextValid;
+/**
+ * Wrap the given {@link SpanContext} in a new non-recording {@link Span}
+ *
+ * @param spanContext span context to be wrapped
+ * @returns a new non-recording {@link Span} with the provided context
+ */
+function wrapSpanContext(spanContext) {
+    return new NonRecordingSpan_1.NonRecordingSpan(spanContext);
+}
+exports.wrapSpanContext = wrapSpanContext;
+//# sourceMappingURL=spancontext-utils.js.map
 
 /***/ }),
-/* 626 */,
-/* 627 */,
-/* 628 */,
-/* 629 */,
 /* 630 */,
 /* 631 */
 /***/ (function(module) {
@@ -42072,7 +42040,318 @@ module.exports = require("net");
 
 
 /***/ }),
-/* 640 */,
+/* 640 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 641 */,
 /* 642 */,
 /* 643 */,
@@ -43651,7 +43930,33 @@ module.exports = require("net");
 /* 646 */,
 /* 647 */,
 /* 648 */,
-/* 649 */,
+/* 649 */
+/***/ (function(module) {
+
+"use strict";
+
+
+module.exports.mixin = function mixin(target, source) {
+  const keys = Object.getOwnPropertyNames(source);
+  for (let i = 0; i < keys.length; ++i) {
+    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
+  }
+};
+
+module.exports.wrapperSymbol = Symbol("wrapper");
+module.exports.implSymbol = Symbol("impl");
+
+module.exports.wrapperForImpl = function (impl) {
+  return impl[module.exports.wrapperSymbol];
+};
+
+module.exports.implForWrapper = function (wrapper) {
+  return wrapper[module.exports.implSymbol];
+};
+
+
+
+/***/ }),
 /* 650 */,
 /* 651 */,
 /* 652 */,
@@ -43702,30 +44007,7 @@ module.exports = require("net");
 
 /***/ }),
 /* 658 */,
-/* 659 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Meter.js.map
-
-/***/ }),
+/* 659 */,
 /* 660 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -43874,7 +44156,76 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 663 */,
 /* 664 */,
 /* 665 */,
-/* 666 */,
+/* 666 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BaggageImpl = void 0;
+var BaggageImpl = /** @class */ (function () {
+    function BaggageImpl(entries) {
+        this._entries = entries ? new Map(entries) : new Map();
+    }
+    BaggageImpl.prototype.getEntry = function (key) {
+        var entry = this._entries.get(key);
+        if (!entry) {
+            return undefined;
+        }
+        return Object.assign({}, entry);
+    };
+    BaggageImpl.prototype.getAllEntries = function () {
+        return Array.from(this._entries.entries()).map(function (_a) {
+            var k = _a[0], v = _a[1];
+            return [k, v];
+        });
+    };
+    BaggageImpl.prototype.setEntry = function (key, entry) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.set(key, entry);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntry = function (key) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.delete(key);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntries = function () {
+        var keys = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            keys[_i] = arguments[_i];
+        }
+        var newBaggage = new BaggageImpl(this._entries);
+        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
+            var key = keys_1[_a];
+            newBaggage._entries.delete(key);
+        }
+        return newBaggage;
+    };
+    BaggageImpl.prototype.clear = function () {
+        return new BaggageImpl();
+    };
+    return BaggageImpl;
+}());
+exports.BaggageImpl = BaggageImpl;
+//# sourceMappingURL=baggage-impl.js.map
+
+/***/ }),
 /* 667 */,
 /* 668 */,
 /* 669 */
@@ -43935,12 +44286,342 @@ var SpanKind;
 //# sourceMappingURL=span_kind.js.map
 
 /***/ }),
-/* 671 */,
+/* 671 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 672 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -43952,9 +44633,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 };
 var _a;
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert_1 = __webpack_require__(357);
-const fs = __webpack_require__(747);
-const path = __webpack_require__(622);
+exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
+const fs = __importStar(__webpack_require__(747));
+const path = __importStar(__webpack_require__(622));
 _a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
 exports.IS_WINDOWS = process.platform === 'win32';
 function exists(fsPath) {
@@ -43995,49 +44676,6 @@ function isRooted(p) {
     return p.startsWith('/');
 }
 exports.isRooted = isRooted;
-/**
- * Recursively create a directory at `fsPath`.
- *
- * This implementation is optimistic, meaning it attempts to create the full
- * path first, and backs up the path stack from there.
- *
- * @param fsPath The path to create
- * @param maxDepth The maximum recursion depth
- * @param depth The current recursion depth
- */
-function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
-    return __awaiter(this, void 0, void 0, function* () {
-        assert_1.ok(fsPath, 'a path argument must be provided');
-        fsPath = path.resolve(fsPath);
-        if (depth >= maxDepth)
-            return exports.mkdir(fsPath);
-        try {
-            yield exports.mkdir(fsPath);
-            return;
-        }
-        catch (err) {
-            switch (err.code) {
-                case 'ENOENT': {
-                    yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
-                    yield exports.mkdir(fsPath);
-                    return;
-                }
-                default: {
-                    let stats;
-                    try {
-                        stats = yield exports.stat(fsPath);
-                    }
-                    catch (err2) {
-                        throw err;
-                    }
-                    if (!stats.isDirectory())
-                        throw err;
-                }
-            }
-        }
-    });
-}
-exports.mkdirP = mkdirP;
 /**
  * Best effort attempt to determine whether a file exists and is executable.
  * @param filePath    file path to check
@@ -44134,10 +44772,66 @@ function isUnixExecutable(stats) {
         ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
         ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
 }
+// Get the path of cmd.exe in windows
+function getCmdPath() {
+    var _a;
+    return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;
+}
+exports.getCmdPath = getCmdPath;
 //# sourceMappingURL=io-util.js.map
 
 /***/ }),
-/* 673 */,
+/* 673 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createLogLevelDiagLogger = void 0;
+var types_1 = __webpack_require__(545);
+function createLogLevelDiagLogger(maxLevel, logger) {
+    if (maxLevel < types_1.DiagLogLevel.NONE) {
+        maxLevel = types_1.DiagLogLevel.NONE;
+    }
+    else if (maxLevel > types_1.DiagLogLevel.ALL) {
+        maxLevel = types_1.DiagLogLevel.ALL;
+    }
+    // In case the logger is null or undefined
+    logger = logger || {};
+    function _filterFunc(funcName, theLevel) {
+        var theFunc = logger[funcName];
+        if (typeof theFunc === 'function' && maxLevel >= theLevel) {
+            return theFunc.bind(logger);
+        }
+        return function () { };
+    }
+    return {
+        error: _filterFunc('error', types_1.DiagLogLevel.ERROR),
+        warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),
+        info: _filterFunc('info', types_1.DiagLogLevel.INFO),
+        debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),
+        verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),
+    };
+}
+exports.createLogLevelDiagLogger = createLogLevelDiagLogger;
+//# sourceMappingURL=logLevelLogger.js.map
+
+/***/ }),
 /* 674 */,
 /* 675 */,
 /* 676 */
@@ -44299,9 +44993,13 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
         try {
             // Download the cache from the cache entry
             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options);
-            const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
+            if (core.isDebug()) {
+                yield tar_1.listTar(archivePath, compressionMethod);
+            }
+            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`);
             yield tar_1.extractTar(archivePath, compressionMethod);
+            core.info('Cache restored successfully');
         }
         finally {
             // Try to delete the archive to save space
@@ -44343,15 +45041,29 @@ function saveCache(paths, key, options) {
         const archiveFolder = yield utils.createTempDirectory();
         const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
         core.debug(`Archive Path: ${archivePath}`);
-        yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod);
-        const fileSizeLimit = 5 * 1024 * 1024 * 1024; // 5GB per repo limit
-        const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
-        core.debug(`File Size: ${archiveFileSize}`);
-        if (archiveFileSize > fileSizeLimit) {
-            throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 5GB limit, not saving cache.`);
+        try {
+            yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod);
+            if (core.isDebug()) {
+                yield tar_1.listTar(archivePath, compressionMethod);
+            }
+            const fileSizeLimit = 10 * 1024 * 1024 * 1024; // 10GB per repo limit
+            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
+            core.debug(`File Size: ${archiveFileSize}`);
+            if (archiveFileSize > fileSizeLimit) {
+                throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`);
+            }
+            core.debug(`Saving Cache (ID: ${cacheId})`);
+            yield cacheHttpClient.saveCache(cacheId, archivePath, options);
+        }
+        finally {
+            // Try to delete the archive to save space
+            try {
+                yield utils.unlinkFile(archivePath);
+            }
+            catch (error) {
+                core.debug(`Failed to delete archive: ${error}`);
+            }
         }
-        core.debug(`Saving Cache (ID: ${cacheId})`);
-        yield cacheHttpClient.saveCache(cacheId, archivePath, options);
         return cacheId;
     });
 }
@@ -44414,30 +45126,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 699 */,
 /* 700 */,
 /* 701 */,
-/* 702 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=MeterProvider.js.map
-
-/***/ }),
+/* 702 */,
 /* 703 */,
 /* 704 */,
 /* 705 */,
@@ -44524,13 +45213,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 712 */,
 /* 713 */,
 /* 714 */,
-/* 715 */
-/***/ (function(__unusedmodule, exports) {
+/* 715 */,
+/* 716 */,
+/* 717 */,
+/* 718 */,
+/* 719 */,
+/* 720 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Context = void 0;
 /*
  * Copyright The OpenTelemetry Authors
  *
@@ -44546,70 +45238,66 @@ exports.Context = void 0;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var Context = /** @class */ (function () {
-    /**
-     * Construct a new context which inherits values from an optional parent context.
-     *
-     * @param parentContext a context from which to inherit values
-     */
-    function Context(parentContext) {
-        this._currentContext = parentContext ? new Map(parentContext) : new Map();
-    }
-    /** Get a key to uniquely identify a context value */
-    Context.createKey = function (description) {
-        return Symbol(description);
-    };
-    /**
-     * Get a value from the context.
-     *
-     * @param key key which identifies a context value
-     */
-    Context.prototype.getValue = function (key) {
-        return this._currentContext.get(key);
-    };
-    /**
-     * Create a new context which inherits from this context and has
-     * the given key set to the given value.
-     *
-     * @param key context key for which to set the value
-     * @param value value to set for the given key
-     */
-    Context.prototype.setValue = function (key, value) {
-        var context = new Context(this._currentContext);
-        context._currentContext.set(key, value);
-        return context;
-    };
-    /**
-     * Return a new context which inherits from this context but does
-     * not contain a value for the given key.
-     *
-     * @param key context key for which to clear a value
-     */
-    Context.prototype.deleteValue = function (key) {
-        var context = new Context(this._currentContext);
-        context._currentContext.delete(key);
-        return context;
-    };
-    /** The root context is used as the default parent context when there is no active context */
-    Context.ROOT_CONTEXT = new Context();
-    /**
-     * This is another identifier to the root context which allows developers to easily search the
-     * codebase for direct uses of context which need to be removed in later PRs.
-     *
-     * It's existence is temporary and it should be removed when all references are fixed.
-     */
-    Context.TODO = Context.ROOT_CONTEXT;
-    return Context;
-}());
-exports.Context = Context;
-//# sourceMappingURL=context.js.map
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getSpan = void 0;
+var context_1 = __webpack_require__(132);
+var NonRecordingSpan_1 = __webpack_require__(437);
+/**
+ * span key
+ */
+var SPAN_KEY = context_1.createContextKey('OpenTelemetry Context Key SPAN');
+/**
+ * Return the span if one exists
+ *
+ * @param context context to get span from
+ */
+function getSpan(context) {
+    return context.getValue(SPAN_KEY) || undefined;
+}
+exports.getSpan = getSpan;
+/**
+ * Set the span on a context
+ *
+ * @param context context to use as parent
+ * @param span span to set active
+ */
+function setSpan(context, span) {
+    return context.setValue(SPAN_KEY, span);
+}
+exports.setSpan = setSpan;
+/**
+ * Remove current span stored in the context
+ *
+ * @param context context to delete span from
+ */
+function deleteSpan(context) {
+    return context.deleteValue(SPAN_KEY);
+}
+exports.deleteSpan = deleteSpan;
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context context to set active span on
+ * @param spanContext span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));
+}
+exports.setSpanContext = setSpanContext;
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context context to get values from
+ */
+function getSpanContext(context) {
+    var _a;
+    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();
+}
+exports.getSpanContext = getSpanContext;
+//# sourceMappingURL=context-utils.js.map
 
 /***/ }),
-/* 716 */,
-/* 717 */,
-/* 718 */,
-/* 719 */,
-/* 720 */,
 /* 721 */,
 /* 722 */
 /***/ (function(module) {
@@ -44668,36 +45356,14 @@ module.exports = bytesToUuid;
 /***/ }),
 /* 725 */,
 /* 726 */,
-/* 727 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Event.js.map
-
-/***/ }),
+/* 727 */,
 /* 728 */
 /***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.SearchState = void 0;
 class SearchState {
     constructor(path, level) {
         this.path = path;
@@ -44989,49 +45655,91 @@ function rng() {
 /* 739 */,
 /* 740 */,
 /* 741 */,
-/* 742 */,
-/* 743 */,
-/* 744 */
-/***/ (function(__unusedmodule, exports) {
+/* 742 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+var __awaiter = (this && this.__awaiter) || function (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());
+    });
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_HTTP_TEXT_PROPAGATOR = exports.NoopHttpTextPropagator = void 0;
-/**
- * No-op implementations of {@link HttpTextPropagator}.
- */
-var NoopHttpTextPropagator = /** @class */ (function () {
-    function NoopHttpTextPropagator() {
+exports.OidcClient = void 0;
+const http_client_1 = __webpack_require__(539);
+const auth_1 = __webpack_require__(226);
+const core_1 = __webpack_require__(470);
+class OidcClient {
+    static createHttpClient(allowRetry = true, maxRetry = 10) {
+        const requestOptions = {
+            allowRetries: allowRetry,
+            maxRetries: maxRetry
+        };
+        return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
     }
-    /** Noop inject function does nothing */
-    NoopHttpTextPropagator.prototype.inject = function (context, carrier, setter) { };
-    /** Noop extract function does nothing and returns the input context */
-    NoopHttpTextPropagator.prototype.extract = function (context, carrier, getter) {
-        return context;
-    };
-    return NoopHttpTextPropagator;
-}());
-exports.NoopHttpTextPropagator = NoopHttpTextPropagator;
-exports.NOOP_HTTP_TEXT_PROPAGATOR = new NoopHttpTextPropagator();
-//# sourceMappingURL=NoopHttpTextPropagator.js.map
+    static getRequestToken() {
+        const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
+        if (!token) {
+            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
+        }
+        return token;
+    }
+    static getIDTokenUrl() {
+        const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
+        if (!runtimeUrl) {
+            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
+        }
+        return runtimeUrl;
+    }
+    static getCall(id_token_url) {
+        var _a;
+        return __awaiter(this, void 0, void 0, function* () {
+            const httpclient = OidcClient.createHttpClient();
+            const res = yield httpclient
+                .getJson(id_token_url)
+                .catch(error => {
+                throw new Error(`Failed to get ID Token. \n 
+        Error Code : ${error.statusCode}\n 
+        Error Message: ${error.result.message}`);
+            });
+            const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
+            if (!id_token) {
+                throw new Error('Response json body do not have ID Token field');
+            }
+            return id_token;
+        });
+    }
+    static getIDToken(audience) {
+        return __awaiter(this, void 0, void 0, function* () {
+            try {
+                // New ID Token is requested from action service
+                let id_token_url = OidcClient.getIDTokenUrl();
+                if (audience) {
+                    const encodedAudience = encodeURIComponent(audience);
+                    id_token_url = `${id_token_url}&audience=${encodedAudience}`;
+                }
+                core_1.debug(`ID token url is ${id_token_url}`);
+                const id_token = yield OidcClient.getCall(id_token_url);
+                core_1.setSecret(id_token);
+                return id_token;
+            }
+            catch (error) {
+                throw new Error(`Error message: ${error.message}`);
+            }
+        });
+    }
+}
+exports.OidcClient = OidcClient;
+//# sourceMappingURL=oidc-utils.js.map
 
 /***/ }),
+/* 743 */,
+/* 744 */,
 /* 745 */,
 /* 746 */,
 /* 747 */
@@ -45050,7 +45758,7 @@ module.exports = require("fs");
 
 
 
-var Punycode = __webpack_require__(213);
+var Punycode = __webpack_require__(815);
 
 
 var internals = {};
@@ -45359,41 +46067,7 @@ function async(callback)
 
 /***/ }),
 /* 752 */,
-/* 753 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defaultSetter = void 0;
-/**
- * Default setter which sets value via direct property access
- *
- * @param carrier
- * @param key
- */
-function defaultSetter(carrier, key, value) {
-    carrier[key] = value;
-}
-exports.defaultSetter = defaultSetter;
-//# sourceMappingURL=setter.js.map
-
-/***/ }),
+/* 753 */,
 /* 754 */,
 /* 755 */,
 /* 756 */,
@@ -45437,7 +46111,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 __exportStar(__webpack_require__(145), exports);
@@ -45461,83 +46135,7 @@ module.exports = function(dst, src) {
 
 
 /***/ }),
-/* 767 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_SPAN = exports.NoopSpan = exports.INVALID_SPAN_ID = exports.INVALID_TRACE_ID = void 0;
-var trace_flags_1 = __webpack_require__(975);
-exports.INVALID_TRACE_ID = '0';
-exports.INVALID_SPAN_ID = '0';
-var INVALID_SPAN_CONTEXT = {
-    traceId: exports.INVALID_TRACE_ID,
-    spanId: exports.INVALID_SPAN_ID,
-    traceFlags: trace_flags_1.TraceFlags.NONE,
-};
-/**
- * The NoopSpan is the default {@link Span} that is used when no Span
- * implementation is available. All operations are no-op including context
- * propagation.
- */
-var NoopSpan = /** @class */ (function () {
-    function NoopSpan(_spanContext) {
-        if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; }
-        this._spanContext = _spanContext;
-    }
-    // Returns a SpanContext.
-    NoopSpan.prototype.context = function () {
-        return this._spanContext;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttribute = function (key, value) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttributes = function (attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.addEvent = function (name, attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setStatus = function (status) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.updateName = function (name) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.end = function (endTime) { };
-    // isRecording always returns false for noopSpan.
-    NoopSpan.prototype.isRecording = function () {
-        return false;
-    };
-    return NoopSpan;
-}());
-exports.NoopSpan = NoopSpan;
-exports.NOOP_SPAN = new NoopSpan();
-//# sourceMappingURL=NoopSpan.js.map
-
-/***/ }),
+/* 767 */,
 /* 768 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -46101,7 +46699,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
     __setModuleDefault(result, mod);
     return result;
 };
@@ -46393,7 +46991,209 @@ Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=Sampler.js.map
 
 /***/ }),
-/* 782 */,
+/* 782 */
+/***/ (function(module, __unusedexports, __webpack_require__) {
+
+"use strict";
+
+
+const conversions = __webpack_require__(149);
+const utils = __webpack_require__(649);
+const Impl = __webpack_require__(256);
+
+const impl = utils.implSymbol;
+
+function URL(url) {
+  if (!this || this[impl] || !(this instanceof URL)) {
+    throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
+  }
+  if (arguments.length < 1) {
+    throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 2; ++i) {
+    args[i] = arguments[i];
+  }
+  args[0] = conversions["USVString"](args[0]);
+  if (args[1] !== undefined) {
+  args[1] = conversions["USVString"](args[1]);
+  }
+
+  module.exports.setup(this, args);
+}
+
+URL.prototype.toJSON = function toJSON() {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 0; ++i) {
+    args[i] = arguments[i];
+  }
+  return this[impl].toJSON.apply(this[impl], args);
+};
+Object.defineProperty(URL.prototype, "href", {
+  get() {
+    return this[impl].href;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].href = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+URL.prototype.toString = function () {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  return this.href;
+};
+
+Object.defineProperty(URL.prototype, "origin", {
+  get() {
+    return this[impl].origin;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "protocol", {
+  get() {
+    return this[impl].protocol;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].protocol = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "username", {
+  get() {
+    return this[impl].username;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].username = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "password", {
+  get() {
+    return this[impl].password;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].password = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "host", {
+  get() {
+    return this[impl].host;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].host = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hostname", {
+  get() {
+    return this[impl].hostname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hostname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "port", {
+  get() {
+    return this[impl].port;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].port = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "pathname", {
+  get() {
+    return this[impl].pathname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].pathname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "search", {
+  get() {
+    return this[impl].search;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].search = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hash", {
+  get() {
+    return this[impl].hash;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hash = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+
+module.exports = {
+  is(obj) {
+    return !!obj && obj[impl] instanceof Impl.implementation;
+  },
+  create(constructorArgs, privateData) {
+    let obj = Object.create(URL.prototype);
+    this.setup(obj, constructorArgs, privateData);
+    return obj;
+  },
+  setup(obj, constructorArgs, privateData) {
+    if (!privateData) privateData = {};
+    privateData.wrapper = obj;
+
+    obj[impl] = new Impl.implementation(constructorArgs, privateData);
+    obj[impl][utils.wrapperSymbol] = obj;
+  },
+  interface: URL,
+  expose: {
+    Window: { URL: URL },
+    Worker: { URL: URL }
+  }
+};
+
+
+
+/***/ }),
 /* 783 */,
 /* 784 */,
 /* 785 */,
@@ -46411,6 +47211,7 @@ var http = __webpack_require__(605);
 var https = __webpack_require__(211);
 var parseUrl = __webpack_require__(835).parse;
 var fs = __webpack_require__(747);
+var Stream = __webpack_require__(794).Stream;
 var mime = __webpack_require__(779);
 var asynckit = __webpack_require__(334);
 var populate = __webpack_require__(766);
@@ -46506,8 +47307,8 @@ FormData.prototype._trackLength = function(header, value, options) {
     Buffer.byteLength(header) +
     FormData.LINE_BREAK.length;
 
-  // empty or either doesn't have path or not an http response
-  if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
+  // empty or either doesn't have path or not an http response or not a stream
+  if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {
     return;
   }
 
@@ -46711,6 +47512,10 @@ FormData.prototype.getHeaders = function(userHeaders) {
   return formHeaders;
 };
 
+FormData.prototype.setBoundary = function(boundary) {
+  this._boundary = boundary;
+};
+
 FormData.prototype.getBoundary = function() {
   if (!this._boundary) {
     this._generateBoundary();
@@ -46858,13 +47663,15 @@ FormData.prototype.submit = function(params, cb) {
 
   // get content length and fire away
   this.getLength(function(err, length) {
-    if (err) {
+    if (err && err !== 'Unknown stream') {
       this._error(err);
       return;
     }
 
     // add content length
-    request.setHeader('Content-Length', length);
+    if (length) {
+      request.setHeader('Content-Length', length);
+    }
 
     this.pipe(request);
     if (cb) {
@@ -47373,299 +48180,7 @@ module.exports = require("stream");
 /* 815 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
+module.exports = require("punycode");
 
 /***/ }),
 /* 816 */,
@@ -47716,7 +48231,33 @@ module.exports = v4;
 /* 827 */,
 /* 828 */,
 /* 829 */,
-/* 830 */,
+/* 830 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.VERSION = void 0;
+// this is autogenerated file, see scripts/version-update.js
+exports.VERSION = '1.0.3';
+//# sourceMappingURL=version.js.map
+
+/***/ }),
 /* 831 */,
 /* 832 */,
 /* 833 */,
@@ -47730,42 +48271,13 @@ module.exports = require("url");
 /* 836 */,
 /* 837 */,
 /* 838 */,
-/* 839 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=TimedEvent.js.map
-
-/***/ }),
+/* 839 */,
 /* 840 */,
 /* 841 */,
 /* 842 */,
 /* 843 */,
 /* 844 */,
-/* 845 */,
-/* 846 */,
-/* 847 */,
-/* 848 */,
-/* 849 */,
-/* 850 */,
-/* 851 */
+/* 845 */
 /***/ (function(__unusedmodule, exports) {
 
 "use strict";
@@ -47786,9 +48298,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=link_context.js.map
+//# sourceMappingURL=types.js.map
 
 /***/ }),
+/* 846 */,
+/* 847 */,
+/* 848 */,
+/* 849 */,
+/* 850 */,
+/* 851 */,
 /* 852 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -47865,298 +48383,312 @@ exports.default = _default;
 /* 865 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -48191,14 +48723,26 @@ var __createBinding;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.TraceAPI = void 0;
-var NoopTracerProvider_1 = __webpack_require__(162);
-var global_utils_1 = __webpack_require__(976);
+var global_utils_1 = __webpack_require__(525);
+var ProxyTracerProvider_1 = __webpack_require__(394);
+var spancontext_utils_1 = __webpack_require__(629);
+var context_utils_1 = __webpack_require__(720);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'trace';
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Tracing API
  */
 var TraceAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function TraceAPI() {
+        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
+        this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;
+        this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
+        this.deleteSpan = context_utils_1.deleteSpan;
+        this.getSpan = context_utils_1.getSpan;
+        this.getSpanContext = context_utils_1.getSpanContext;
+        this.setSpan = context_utils_1.setSpan;
+        this.setSpanContext = context_utils_1.setSpanContext;
     }
     /** Get the singleton instance of the Trace API */
     TraceAPI.getInstance = function () {
@@ -48208,22 +48752,22 @@ var TraceAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current global tracer. Returns the initialized global tracer provider
+     * Set the current global tracer.
+     *
+     * @returns true if the tracer provider was successfully registered, else false
      */
     TraceAPI.prototype.setGlobalTracerProvider = function (provider) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY]) {
-            // global tracer provider has already been set
-            return this.getTracerProvider();
+        var success = global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());
+        if (success) {
+            this._proxyTracerProvider.setDelegate(provider);
         }
-        global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopTracerProvider_1.NOOP_TRACER_PROVIDER);
-        return this.getTracerProvider();
+        return success;
     };
     /**
      * Returns the global tracer provider.
      */
     TraceAPI.prototype.getTracerProvider = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopTracerProvider_1.NOOP_TRACER_PROVIDER);
+        return global_utils_1.getGlobal(API_NAME) || this._proxyTracerProvider;
     };
     /**
      * Returns a tracer from the global tracer provider.
@@ -48233,7 +48777,8 @@ var TraceAPI = /** @class */ (function () {
     };
     /** Remove the global tracer provider */
     TraceAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
+        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
     };
     return TraceAPI;
 }());
@@ -48245,8 +48790,77 @@ exports.TraceAPI = TraceAPI;
 /* 877 */,
 /* 878 */,
 /* 879 */,
-/* 880 */,
-/* 881 */,
+/* 880 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map
+
+/***/ }),
+/* 881 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;
+exports.defaultTextMapGetter = {
+    get: function (carrier, key) {
+        if (carrier == null) {
+            return undefined;
+        }
+        return carrier[key];
+    },
+    keys: function (carrier) {
+        if (carrier == null) {
+            return [];
+        }
+        return Object.keys(carrier);
+    },
+};
+exports.defaultTextMapSetter = {
+    set: function (carrier, key, value) {
+        if (carrier == null) {
+            return;
+        }
+        carrier[key] = value;
+    },
+};
+//# sourceMappingURL=TextMapPropagator.js.map
+
+/***/ }),
 /* 882 */,
 /* 883 */,
 /* 884 */
@@ -48382,7 +48996,7 @@ exports.TraceAPI = TraceAPI;
 
   processors = __webpack_require__(350);
 
-  setImmediate = __webpack_require__(343).setImmediate;
+  setImmediate = __webpack_require__(213).setImmediate;
 
   defaults = __webpack_require__(791).defaults;
 
@@ -48757,48 +49371,36 @@ exports.TraceAPI = TraceAPI;
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
-/*!
- * Copyright (c) Microsoft and contributors. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- * 
- * Azure Core LRO SDK for JavaScript - 1.0.2
- */
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(422);
+var logger$1 = __webpack_require__(928);
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * When a poller is manually stopped through the `stopPolling` method,
  * the poller will be rejected with an instance of the PollerStoppedError.
  */
-var PollerStoppedError = /** @class */ (function (_super) {
-    tslib.__extends(PollerStoppedError, _super);
-    function PollerStoppedError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerStoppedError";
-        Object.setPrototypeOf(_this, PollerStoppedError.prototype);
-        return _this;
+class PollerStoppedError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerStoppedError";
+        Object.setPrototypeOf(this, PollerStoppedError.prototype);
     }
-    return PollerStoppedError;
-}(Error));
+}
 /**
  * When a poller is cancelled through the `cancelOperation` method,
  * the poller will be rejected with an instance of the PollerCancelledError.
  */
-var PollerCancelledError = /** @class */ (function (_super) {
-    tslib.__extends(PollerCancelledError, _super);
-    function PollerCancelledError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerCancelledError";
-        Object.setPrototypeOf(_this, PollerCancelledError.prototype);
-        return _this;
+class PollerCancelledError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerCancelledError";
+        Object.setPrototypeOf(this, PollerCancelledError.prototype);
     }
-    return PollerCancelledError;
-}(Error));
+}
 /**
  * A class that represents the definition of a program that polls through consecutive requests
  * until it reaches a state of completion.
@@ -48860,9 +49462,10 @@ var PollerCancelledError = /** @class */ (function (_super) {
  * ```
  *
  */
-var Poller = /** @class */ (function () {
+// eslint-disable-next-line no-use-before-define
+class Poller {
     /**
-     * A poller needs to be initialized by passing in at least the basic properties of the PollOperation<TState, TResult>.
+     * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.
      *
      * When writing an implementation of a Poller, this implementation needs to deal with the initialization
      * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's
@@ -48924,219 +49527,169 @@ var Poller = /** @class */ (function () {
      * }
      * ```
      *
-     * @param operation Must contain the basic properties of PollOperation<State, TResult>.
+     * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.
      */
-    function Poller(operation) {
-        var _this = this;
+    constructor(operation) {
         this.stopped = true;
         this.pollProgressCallbacks = [];
         this.operation = operation;
-        this.promise = new Promise(function (resolve, reject) {
-            _this.resolve = resolve;
-            _this.reject = reject;
+        this.promise = new Promise((resolve, reject) => {
+            this.resolve = resolve;
+            this.reject = reject;
         });
         // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.
         // The above warning would get thrown if `poller.poll` is called, it returns an error,
         // and pullUntilDone did not have a .catch or await try/catch on it's return value.
-        this.promise.catch(function () { });
+        this.promise.catch(() => {
+            /* intentionally blank */
+        });
     }
     /**
      * @internal
-     * @ignore
      * Starts a loop that will break only if the poller is done
      * or if the poller is stopped.
      */
-    Poller.prototype.startPolling = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (this.stopped) {
-                            this.stopped = false;
-                        }
-                        _a.label = 1;
-                    case 1:
-                        if (!(!this.isStopped() && !this.isDone())) return [3 /*break*/, 4];
-                        return [4 /*yield*/, this.poll()];
-                    case 2:
-                        _a.sent();
-                        return [4 /*yield*/, this.delay()];
-                    case 3:
-                        _a.sent();
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async startPolling() {
+        if (this.stopped) {
+            this.stopped = false;
+        }
+        while (!this.isStopped() && !this.isDone()) {
+            await this.poll();
+            await this.delay();
+        }
+    }
     /**
      * @internal
-     * @ignore
      * pollOnce does one polling, by calling to the update method of the underlying
      * poll operation to make any relevant change effective.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.pollOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var state, _a, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        state = this.operation.state;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, , 5]);
-                        if (!!this.isDone()) return [3 /*break*/, 3];
-                        _a = this;
-                        return [4 /*yield*/, this.operation.update({
-                                abortSignal: options.abortSignal,
-                                fireProgress: this.fireProgress.bind(this)
-                            })];
-                    case 2:
-                        _a.operation = _b.sent();
-                        if (this.isDone() && this.resolve) {
-                            this.resolve(state.result);
-                        }
-                        _b.label = 3;
-                    case 3: return [3 /*break*/, 5];
-                    case 4:
-                        e_1 = _b.sent();
-                        state.error = e_1;
-                        if (this.reject) {
-                            this.reject(e_1);
-                        }
-                        throw e_1;
-                    case 5: return [2 /*return*/];
+    async pollOnce(options = {}) {
+        try {
+            if (!this.isDone()) {
+                this.operation = await this.operation.update({
+                    abortSignal: options.abortSignal,
+                    fireProgress: this.fireProgress.bind(this)
+                });
+                if (this.isDone() && this.resolve) {
+                    // If the poller has finished polling, this means we now have a result.
+                    // However, it can be the case that TResult is instantiated to void, so
+                    // we are not expecting a result anyway. To assert that we might not
+                    // have a result eventually after finishing polling, we cast the result
+                    // to TResult.
+                    this.resolve(this.operation.state.result);
                 }
-            });
-        });
-    };
+            }
+        }
+        catch (e) {
+            this.operation.state.error = e;
+            if (this.reject) {
+                this.reject(e);
+            }
+            throw e;
+        }
+    }
     /**
      * @internal
-     * @ignore
      * fireProgress calls the functions passed in via onProgress the method of the poller.
      *
      * It loops over all of the callbacks received from onProgress, and executes them, sending them
      * the current operation state.
      *
-     * @param state The current operation state.
+     * @param state - The current operation state.
      */
-    Poller.prototype.fireProgress = function (state) {
-        for (var _i = 0, _a = this.pollProgressCallbacks; _i < _a.length; _i++) {
-            var callback = _a[_i];
+    fireProgress(state) {
+        for (const callback of this.pollProgressCallbacks) {
             callback(state);
         }
-    };
+    }
     /**
      * @internal
-     * @ignore
      * Invokes the underlying operation's cancel method, and rejects the
      * pollUntilDone promise.
      */
-    Poller.prototype.cancelOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this;
-                        return [4 /*yield*/, this.operation.cancel(options)];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.reject) {
-                            this.reject(new PollerCancelledError("Poller cancelled"));
-                        }
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async cancelOnce(options = {}) {
+        this.operation = await this.operation.cancel(options);
+        if (this.reject) {
+            this.reject(new PollerCancelledError("Poller cancelled"));
+        }
+    }
     /**
      * Returns a promise that will resolve once a single polling request finishes.
      * It does this by calling the update method of the Poller's operation.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.poll = function (options) {
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    poll(options = {}) {
         if (!this.pollOncePromise) {
             this.pollOncePromise = this.pollOnce(options);
-            var clearPollOncePromise = function () {
-                _this.pollOncePromise = undefined;
+            const clearPollOncePromise = () => {
+                this.pollOncePromise = undefined;
             };
-            this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise);
+            this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);
         }
         return this.pollOncePromise;
-    };
+    }
     /**
      * Returns a promise that will resolve once the underlying operation is completed.
      */
-    Poller.prototype.pollUntilDone = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                if (this.stopped) {
-                    this.startPolling().catch(this.reject);
-                }
-                return [2 /*return*/, this.promise];
-            });
-        });
-    };
+    async pollUntilDone() {
+        if (this.stopped) {
+            this.startPolling().catch(this.reject);
+        }
+        return this.promise;
+    }
     /**
      * Invokes the provided callback after each polling is completed,
      * sending the current state of the poller's operation.
      *
      * It returns a method that can be used to stop receiving updates on the given callback function.
      */
-    Poller.prototype.onProgress = function (callback) {
-        var _this = this;
+    onProgress(callback) {
         this.pollProgressCallbacks.push(callback);
-        return function () {
-            _this.pollProgressCallbacks = _this.pollProgressCallbacks.filter(function (c) { return c !== callback; });
+        return () => {
+            this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);
         };
-    };
+    }
     /**
      * Returns true if the poller has finished polling.
      */
-    Poller.prototype.isDone = function () {
-        var state = this.operation.state;
+    isDone() {
+        const state = this.operation.state;
         return Boolean(state.isCompleted || state.isCancelled || state.error);
-    };
+    }
     /**
      * Stops the poller from continuing to poll.
      */
-    Poller.prototype.stopPolling = function () {
+    stopPolling() {
         if (!this.stopped) {
             this.stopped = true;
             if (this.reject) {
                 this.reject(new PollerStoppedError("This poller is already stopped"));
             }
         }
-    };
+    }
     /**
      * Returns true if the poller is stopped.
      */
-    Poller.prototype.isStopped = function () {
+    isStopped() {
         return this.stopped;
-    };
+    }
     /**
      * Attempts to cancel the underlying operation.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
      * If it's called again before it finishes, it will throw an error.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.cancelOperation = function (options) {
-        if (options === void 0) { options = {}; }
+    cancelOperation(options = {}) {
         if (!this.stopped) {
             this.stopped = true;
         }
@@ -49147,7 +49700,7 @@ var Poller = /** @class */ (function () {
             throw new Error("A cancel request is currently pending");
         }
         return this.cancelPromise;
-    };
+    }
     /**
      * Returns the state of the operation.
      *
@@ -49196,29 +49749,379 @@ var Poller = /** @class */ (function () {
      * `../test/utils/testPoller.ts`
      * and look for the getOperationState implementation.
      */
-    Poller.prototype.getOperationState = function () {
+    getOperationState() {
         return this.operation.state;
-    };
+    }
     /**
      * Returns the result value of the operation,
      * regardless of the state of the poller.
      * It can return undefined or an incomplete form of the final TResult value
      * depending on the implementation.
      */
-    Poller.prototype.getResult = function () {
-        var state = this.operation.state;
+    getResult() {
+        const state = this.operation.state;
         return state.result;
-    };
+    }
     /**
      * Returns a serialized version of the poller's operation
      * by invoking the operation's toString method.
      */
-    Poller.prototype.toString = function () {
+    toString() {
         return this.operation.toString();
-    };
-    return Poller;
-}());
+    }
+}
 
+// Copyright (c) Microsoft Corporation.
+/**
+ * The `@azure/logger` configuration for this package.
+ * @internal
+ */
+const logger = logger$1.createClientLogger("core-lro");
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Detects where the continuation token is and returns it. Notice that azure-asyncoperation
+ * must be checked first before the other location headers because there are scenarios
+ * where both azure-asyncoperation and location could be present in the same response but
+ * azure-asyncoperation should be the one to use for polling.
+ */
+function getPollingUrl(rawResponse, defaultPath) {
+    var _a, _b, _c;
+    return ((_c = (_b = (_a = getAzureAsyncOperation(rawResponse)) !== null && _a !== void 0 ? _a : getLocation(rawResponse)) !== null && _b !== void 0 ? _b : getOperationLocation(rawResponse)) !== null && _c !== void 0 ? _c : defaultPath);
+}
+function getLocation(rawResponse) {
+    return rawResponse.headers["location"];
+}
+function getOperationLocation(rawResponse) {
+    return rawResponse.headers["operation-location"];
+}
+function getAzureAsyncOperation(rawResponse) {
+    return rawResponse.headers["azure-asyncoperation"];
+}
+function inferLroMode(requestPath, requestMethod, rawResponse) {
+    if (getAzureAsyncOperation(rawResponse) !== undefined) {
+        return {
+            mode: "AzureAsync",
+            resourceLocation: requestMethod === "PUT"
+                ? requestPath
+                : requestMethod === "POST"
+                    ? getLocation(rawResponse)
+                    : undefined
+        };
+    }
+    else if (getLocation(rawResponse) !== undefined ||
+        getOperationLocation(rawResponse) !== undefined) {
+        return {
+            mode: "Location"
+        };
+    }
+    else if (["PUT", "PATCH"].includes(requestMethod)) {
+        return {
+            mode: "Body"
+        };
+    }
+    return {};
+}
+class SimpleRestError extends Error {
+    constructor(message, statusCode) {
+        super(message);
+        this.name = "RestError";
+        this.statusCode = statusCode;
+        Object.setPrototypeOf(this, SimpleRestError.prototype);
+    }
+}
+function isUnexpectedInitialResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![203, 204, 202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} in the initial response. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+function isUnexpectedPollingResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} while polling. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const successStates = ["succeeded"];
+const failureStates = ["failed", "canceled", "cancelled"];
+
+// Copyright (c) Microsoft Corporation.
+function getResponseStatus(rawResponse) {
+    var _a;
+    const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    return typeof status === "string" ? status.toLowerCase() : "succeeded";
+}
+function isAzureAsyncPollingDone(rawResponse) {
+    const state = getResponseStatus(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Sends a request to the URI of the provisioned resource if needed.
+ */
+async function sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig) {
+    switch (lroResourceLocationConfig) {
+        case "original-uri":
+            return lro.sendPollRequest(lro.requestPath);
+        case "azure-async-operation":
+            return undefined;
+        case "location":
+        default:
+            return lro.sendPollRequest(resourceLocation !== null && resourceLocation !== void 0 ? resourceLocation : lro.requestPath);
+    }
+}
+function processAzureAsyncOperationResult(lro, resourceLocation, lroResourceLocationConfig) {
+    return (response) => {
+        if (isAzureAsyncPollingDone(response.rawResponse)) {
+            if (resourceLocation === undefined) {
+                return Object.assign(Object.assign({}, response), { done: true });
+            }
+            else {
+                return Object.assign(Object.assign({}, response), { done: false, next: async () => {
+                        const finalResponse = await sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig);
+                        return Object.assign(Object.assign({}, (finalResponse !== null && finalResponse !== void 0 ? finalResponse : response)), { done: true });
+                    } });
+            }
+        }
+        return Object.assign(Object.assign({}, response), { done: false });
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+function getProvisioningState(rawResponse) {
+    var _a, _b;
+    const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    const state = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;
+    return typeof state === "string" ? state.toLowerCase() : "succeeded";
+}
+function isBodyPollingDone(rawResponse) {
+    const state = getProvisioningState(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Creates a polling strategy based on BodyPolling which uses the provisioning state
+ * from the result to determine the current operation state
+ */
+function processBodyPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isBodyPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+function isLocationPollingDone(rawResponse) {
+    return !isUnexpectedPollingResponse(rawResponse) && rawResponse.statusCode !== 202;
+}
+function processLocationPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isLocationPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function processPassthroughOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: true });
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * creates a stepping function that maps an LRO state to another.
+ */
+function createGetLroStatusFromResponse(lroPrimitives, config, lroResourceLocationConfig) {
+    switch (config.mode) {
+        case "AzureAsync": {
+            return processAzureAsyncOperationResult(lroPrimitives, config.resourceLocation, lroResourceLocationConfig);
+        }
+        case "Location": {
+            return processLocationPollingOperationResult;
+        }
+        case "Body": {
+            return processBodyPollingOperationResult;
+        }
+        default: {
+            return processPassthroughOperationResult;
+        }
+    }
+}
+/**
+ * Creates a polling operation.
+ */
+function createPoll(lroPrimitives) {
+    return async (path, pollerConfig, getLroStatusFromResponse) => {
+        const response = await lroPrimitives.sendPollRequest(path);
+        const retryAfter = response.rawResponse.headers["retry-after"];
+        if (retryAfter !== undefined) {
+            const retryAfterInMs = parseInt(retryAfter);
+            pollerConfig.intervalInMs = isNaN(retryAfterInMs)
+                ? calculatePollingIntervalFromDate(new Date(retryAfter), pollerConfig.intervalInMs)
+                : retryAfterInMs;
+        }
+        return getLroStatusFromResponse(response);
+    };
+}
+function calculatePollingIntervalFromDate(retryAfterDate, defaultIntervalInMs) {
+    const timeNow = Math.floor(new Date().getTime());
+    const retryAfterTime = retryAfterDate.getTime();
+    if (timeNow < retryAfterTime) {
+        return retryAfterTime - timeNow;
+    }
+    return defaultIntervalInMs;
+}
+/**
+ * Creates a callback to be used to initialize the polling operation state.
+ * @param state - of the polling operation
+ * @param operationSpec - of the LRO
+ * @param callback - callback to be called when the operation is done
+ * @returns callback that initializes the state of the polling operation
+ */
+function createInitializeState(state, requestPath, requestMethod) {
+    return (response) => {
+        if (isUnexpectedInitialResponse(response.rawResponse))
+            ;
+        state.initialRawResponse = response.rawResponse;
+        state.isStarted = true;
+        state.pollingURL = getPollingUrl(state.initialRawResponse, requestPath);
+        state.config = inferLroMode(requestPath, requestMethod, state.initialRawResponse);
+        /** short circuit polling if body polling is done in the initial request */
+        if (state.config.mode === undefined ||
+            (state.config.mode === "Body" && isBodyPollingDone(state.initialRawResponse))) {
+            state.result = response.flatResponse;
+            state.isCompleted = true;
+        }
+        logger.verbose(`LRO: initial state: ${JSON.stringify(state)}`);
+        return Boolean(state.isCompleted);
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+class GenericPollOperation {
+    constructor(state, lro, lroResourceLocationConfig, processResult, updateState, isDone) {
+        this.state = state;
+        this.lro = lro;
+        this.lroResourceLocationConfig = lroResourceLocationConfig;
+        this.processResult = processResult;
+        this.updateState = updateState;
+        this.isDone = isDone;
+    }
+    setPollerConfig(pollerConfig) {
+        this.pollerConfig = pollerConfig;
+    }
+    /**
+     * General update function for LROPoller, the general process is as follows
+     * 1. Check initial operation result to determine the strategy to use
+     *  - Strategies: Location, Azure-AsyncOperation, Original Uri
+     * 2. Check if the operation result has a terminal state
+     *  - Terminal state will be determined by each strategy
+     *  2.1 If it is terminal state Check if a final GET request is required, if so
+     *      send final GET request and return result from operation. If no final GET
+     *      is required, just return the result from operation.
+     *      - Determining what to call for final request is responsibility of each strategy
+     *  2.2 If it is not terminal state, call the polling operation and go to step 1
+     *      - Determining what to call for polling is responsibility of each strategy
+     *      - Strategies will always use the latest URI for polling if provided otherwise
+     *        the last known one
+     */
+    async update(options) {
+        var _a, _b, _c;
+        const state = this.state;
+        let lastResponse = undefined;
+        if (!state.isStarted) {
+            const initializeState = createInitializeState(state, this.lro.requestPath, this.lro.requestMethod);
+            lastResponse = await this.lro.sendInitialRequest();
+            initializeState(lastResponse);
+        }
+        if (!state.isCompleted) {
+            if (!this.poll || !this.getLroStatusFromResponse) {
+                if (!state.config) {
+                    throw new Error("Bad state: LRO mode is undefined. Please check if the serialized state is well-formed.");
+                }
+                const isDone = this.isDone;
+                this.getLroStatusFromResponse = isDone
+                    ? (response) => (Object.assign(Object.assign({}, response), { done: isDone(response.flatResponse, this.state) }))
+                    : createGetLroStatusFromResponse(this.lro, state.config, this.lroResourceLocationConfig);
+                this.poll = createPoll(this.lro);
+            }
+            if (!state.pollingURL) {
+                throw new Error("Bad state: polling URL is undefined. Please check if the serialized state is well-formed.");
+            }
+            const currentState = await this.poll(state.pollingURL, this.pollerConfig, this.getLroStatusFromResponse);
+            logger.verbose(`LRO: polling response: ${JSON.stringify(currentState.rawResponse)}`);
+            if (currentState.done) {
+                state.result = this.processResult
+                    ? this.processResult(currentState.flatResponse, state)
+                    : currentState.flatResponse;
+                state.isCompleted = true;
+            }
+            else {
+                this.poll = (_a = currentState.next) !== null && _a !== void 0 ? _a : this.poll;
+                state.pollingURL = getPollingUrl(currentState.rawResponse, state.pollingURL);
+            }
+            lastResponse = currentState;
+        }
+        logger.verbose(`LRO: current state: ${JSON.stringify(state)}`);
+        if (lastResponse) {
+            (_b = this.updateState) === null || _b === void 0 ? void 0 : _b.call(this, state, lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.rawResponse);
+        }
+        else {
+            logger.error(`LRO: no response was received`);
+        }
+        (_c = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _c === void 0 ? void 0 : _c.call(options, state);
+        return this;
+    }
+    async cancel() {
+        this.state.isCancelled = true;
+        return this;
+    }
+    /**
+     * Serializes the Poller operation.
+     */
+    toString() {
+        return JSON.stringify({
+            state: this.state
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function deserializeState(serializedState) {
+    try {
+        return JSON.parse(serializedState).state;
+    }
+    catch (e) {
+        throw new Error(`LroEngine: Unable to deserialize state: ${serializedState}`);
+    }
+}
+/**
+ * The LRO Engine, a class that performs polling.
+ */
+class LroEngine extends Poller {
+    constructor(lro, options) {
+        const { intervalInMs = 2000, resumeFrom } = options || {};
+        const state = resumeFrom
+            ? deserializeState(resumeFrom)
+            : {};
+        const operation = new GenericPollOperation(state, lro, options === null || options === void 0 ? void 0 : options.lroResourceLocationConfig, options === null || options === void 0 ? void 0 : options.processResult, options === null || options === void 0 ? void 0 : options.updateState, options === null || options === void 0 ? void 0 : options.isDone);
+        super(operation);
+        this.config = { intervalInMs: intervalInMs };
+        operation.setPollerConfig(this.config);
+    }
+    /**
+     * The method used by the poller to wait before attempting to update its operation.
+     */
+    delay() {
+        return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));
+    }
+}
+
+exports.LroEngine = LroEngine;
 exports.Poller = Poller;
 exports.PollerCancelledError = PollerCancelledError;
 exports.PollerStoppedError = PollerStoppedError;
@@ -49309,7 +50212,42 @@ function descending(a, b)
 
 
 /***/ }),
-/* 893 */,
+/* 893 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(__webpack_require__(237), exports);
+__exportStar(__webpack_require__(545), exports);
+//# sourceMappingURL=index.js.map
+
+/***/ }),
 /* 894 */,
 /* 895 */,
 /* 896 */
@@ -49524,6 +50462,21 @@ function state(list, sortMethod)
 
 "use strict";
 
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=attributes.js.map
 
@@ -49559,7 +50512,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 __exportStar(__webpack_require__(764), exports);
@@ -49573,7 +50526,49 @@ __exportStar(__webpack_require__(764), exports);
 /* 915 */,
 /* 916 */,
 /* 917 */,
-/* 918 */,
+/* 918 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NoopTextMapPropagator = void 0;
+/**
+ * No-op implementations of {@link TextMapPropagator}.
+ */
+var NoopTextMapPropagator = /** @class */ (function () {
+    function NoopTextMapPropagator() {
+    }
+    /** Noop inject function does nothing */
+    NoopTextMapPropagator.prototype.inject = function (_context, _carrier) { };
+    /** Noop extract function does nothing and returns the input context */
+    NoopTextMapPropagator.prototype.extract = function (context, _carrier) {
+        return context;
+    };
+    NoopTextMapPropagator.prototype.fields = function () {
+        return [];
+    };
+    return NoopTextMapPropagator;
+}());
+exports.NoopTextMapPropagator = NoopTextMapPropagator;
+//# sourceMappingURL=NoopTextMapPropagator.js.map
+
+/***/ }),
 /* 919 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -49624,17 +50619,40 @@ __exportStar(__webpack_require__(764), exports);
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const os = __webpack_require__(87);
-const path = __webpack_require__(622);
-const pathHelper = __webpack_require__(972);
+exports.Pattern = void 0;
+const os = __importStar(__webpack_require__(87));
+const path = __importStar(__webpack_require__(622));
+const pathHelper = __importStar(__webpack_require__(972));
+const assert_1 = __importDefault(__webpack_require__(357));
 const minimatch_1 = __webpack_require__(93);
 const internal_match_kind_1 = __webpack_require__(327);
 const internal_path_1 = __webpack_require__(383);
 const IS_WINDOWS = process.platform === 'win32';
 class Pattern {
-    constructor(patternOrNegate, segments) {
+    constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) {
         /**
          * Indicates whether matches should be excluded from the result set
          */
@@ -49648,9 +50666,9 @@ class Pattern {
         else {
             // Convert to pattern
             segments = segments || [];
-            assert(segments.length, `Parameter 'segments' must not empty`);
+            assert_1.default(segments.length, `Parameter 'segments' must not empty`);
             const root = Pattern.getLiteral(segments[0]);
-            assert(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
+            assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
             pattern = new internal_path_1.Path(segments).toString().trim();
             if (patternOrNegate) {
                 pattern = `!${pattern}`;
@@ -49662,7 +50680,7 @@ class Pattern {
             pattern = pattern.substr(1).trim();
         }
         // Normalize slashes and ensures absolute root
-        pattern = Pattern.fixupPattern(pattern);
+        pattern = Pattern.fixupPattern(pattern, homedir);
         // Segments
         this.segments = new internal_path_1.Path(pattern).segments;
         // Trailing slash indicates the pattern should only match directories, not regular files
@@ -49678,6 +50696,7 @@ class Pattern {
         this.searchPath = new internal_path_1.Path(searchSegments).toString();
         // Root RegExp (required when determining partial match)
         this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? 'i' : '');
+        this.isImplicitPattern = isImplicitPattern;
         // Create minimatch
         const minimatchOptions = {
             dot: true,
@@ -49699,11 +50718,11 @@ class Pattern {
             // Normalize slashes
             itemPath = pathHelper.normalizeSeparators(itemPath);
             // Append a trailing slash. Otherwise Minimatch will not match the directory immediately
-            // preceeding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
+            // preceding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
             // false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk.
-            if (!itemPath.endsWith(path.sep)) {
+            if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) {
                 // Note, this is safe because the constructor ensures the pattern has an absolute root.
-                // For example, formats like C: and C:foo on Windows are resolved to an aboslute root.
+                // For example, formats like C: and C:foo on Windows are resolved to an absolute root.
                 itemPath = `${itemPath}${path.sep}`;
             }
         }
@@ -49741,15 +50760,15 @@ class Pattern {
     /**
      * Normalizes slashes and ensures absolute root
      */
-    static fixupPattern(pattern) {
+    static fixupPattern(pattern, homedir) {
         // Empty
-        assert(pattern, 'pattern cannot be empty');
+        assert_1.default(pattern, 'pattern cannot be empty');
         // Must not contain `.` segment, unless first segment
         // Must not contain `..` segment
         const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x));
-        assert(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
+        assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
         // Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
-        assert(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
+        assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
         // Normalize slashes
         pattern = pathHelper.normalizeSeparators(pattern);
         // Replace leading `.` segment
@@ -49758,9 +50777,9 @@ class Pattern {
         }
         // Replace leading `~` segment
         else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) {
-            const homedir = os.homedir();
-            assert(homedir, 'Unable to determine HOME directory');
-            assert(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
+            homedir = homedir || os.homedir();
+            assert_1.default(homedir, 'Unable to determine HOME directory');
+            assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
             pattern = Pattern.globEscape(homedir) + pattern.substr(1);
         }
         // Replace relative drive root, e.g. pattern is C: or C:foo
@@ -49856,53 +50875,7 @@ exports.Pattern = Pattern;
 //# sourceMappingURL=internal-pattern.js.map
 
 /***/ }),
-/* 924 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NoopContextManager = void 0;
-var context_1 = __webpack_require__(715);
-var NoopContextManager = /** @class */ (function () {
-    function NoopContextManager() {
-    }
-    NoopContextManager.prototype.active = function () {
-        return context_1.Context.ROOT_CONTEXT;
-    };
-    NoopContextManager.prototype.with = function (context, fn) {
-        return fn();
-    };
-    NoopContextManager.prototype.bind = function (target, context) {
-        return target;
-    };
-    NoopContextManager.prototype.enable = function () {
-        return this;
-    };
-    NoopContextManager.prototype.disable = function () {
-        return this;
-    };
-    return NoopContextManager;
-}());
-exports.NoopContextManager = NoopContextManager;
-//# sourceMappingURL=NoopContextManager.js.map
-
-/***/ }),
+/* 924 */,
 /* 925 */,
 /* 926 */,
 /* 927 */,
@@ -49916,135 +50889,92 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(422);
 var util = _interopDefault(__webpack_require__(669));
 var os = __webpack_require__(87);
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-function log(message) {
-    var args = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        args[_i - 1] = arguments[_i];
-    }
-    process.stderr.write("" + util.format.apply(util, tslib.__spread([message], args)) + os.EOL);
+// Copyright (c) Microsoft Corporation.
+function log(message, ...args) {
+    process.stderr.write(`${util.format(message, ...args)}${os.EOL}`);
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
-var enabledString;
-var enabledNamespaces = [];
-var skippedNamespaces = [];
-var debuggers = [];
+// Copyright (c) Microsoft Corporation.
+const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
+let enabledString;
+let enabledNamespaces = [];
+let skippedNamespaces = [];
+const debuggers = [];
 if (debugEnvVariable) {
     enable(debugEnvVariable);
 }
+const debugObj = Object.assign((namespace) => {
+    return createDebugger(namespace);
+}, {
+    enable,
+    enabled,
+    disable,
+    log
+});
 function enable(namespaces) {
-    var e_1, _a, e_2, _b;
     enabledString = namespaces;
     enabledNamespaces = [];
     skippedNamespaces = [];
-    var wildcard = /\*/g;
-    var namespaceList = namespaces.split(",").map(function (ns) { return ns.trim().replace(wildcard, ".*?"); });
-    try {
-        for (var namespaceList_1 = tslib.__values(namespaceList), namespaceList_1_1 = namespaceList_1.next(); !namespaceList_1_1.done; namespaceList_1_1 = namespaceList_1.next()) {
-            var ns = namespaceList_1_1.value;
-            if (ns.startsWith("-")) {
-                skippedNamespaces.push(new RegExp("^" + ns.substr(1) + "$"));
-            }
-            else {
-                enabledNamespaces.push(new RegExp("^" + ns + "$"));
-            }
+    const wildcard = /\*/g;
+    const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?"));
+    for (const ns of namespaceList) {
+        if (ns.startsWith("-")) {
+            skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));
+        }
+        else {
+            enabledNamespaces.push(new RegExp(`^${ns}$`));
         }
     }
-    catch (e_1_1) { e_1 = { error: e_1_1 }; }
-    finally {
-        try {
-            if (namespaceList_1_1 && !namespaceList_1_1.done && (_a = namespaceList_1.return)) _a.call(namespaceList_1);
-        }
-        finally { if (e_1) throw e_1.error; }
-    }
-    try {
-        for (var debuggers_1 = tslib.__values(debuggers), debuggers_1_1 = debuggers_1.next(); !debuggers_1_1.done; debuggers_1_1 = debuggers_1.next()) {
-            var instance = debuggers_1_1.value;
-            instance.enabled = enabled(instance.namespace);
-        }
-    }
-    catch (e_2_1) { e_2 = { error: e_2_1 }; }
-    finally {
-        try {
-            if (debuggers_1_1 && !debuggers_1_1.done && (_b = debuggers_1.return)) _b.call(debuggers_1);
-        }
-        finally { if (e_2) throw e_2.error; }
+    for (const instance of debuggers) {
+        instance.enabled = enabled(instance.namespace);
     }
 }
 function enabled(namespace) {
-    var e_3, _a, e_4, _b;
     if (namespace.endsWith("*")) {
         return true;
     }
-    try {
-        for (var skippedNamespaces_1 = tslib.__values(skippedNamespaces), skippedNamespaces_1_1 = skippedNamespaces_1.next(); !skippedNamespaces_1_1.done; skippedNamespaces_1_1 = skippedNamespaces_1.next()) {
-            var skipped = skippedNamespaces_1_1.value;
-            if (skipped.test(namespace)) {
-                return false;
-            }
+    for (const skipped of skippedNamespaces) {
+        if (skipped.test(namespace)) {
+            return false;
         }
     }
-    catch (e_3_1) { e_3 = { error: e_3_1 }; }
-    finally {
-        try {
-            if (skippedNamespaces_1_1 && !skippedNamespaces_1_1.done && (_a = skippedNamespaces_1.return)) _a.call(skippedNamespaces_1);
+    for (const enabledNamespace of enabledNamespaces) {
+        if (enabledNamespace.test(namespace)) {
+            return true;
         }
-        finally { if (e_3) throw e_3.error; }
-    }
-    try {
-        for (var enabledNamespaces_1 = tslib.__values(enabledNamespaces), enabledNamespaces_1_1 = enabledNamespaces_1.next(); !enabledNamespaces_1_1.done; enabledNamespaces_1_1 = enabledNamespaces_1.next()) {
-            var enabled_1 = enabledNamespaces_1_1.value;
-            if (enabled_1.test(namespace)) {
-                return true;
-            }
-        }
-    }
-    catch (e_4_1) { e_4 = { error: e_4_1 }; }
-    finally {
-        try {
-            if (enabledNamespaces_1_1 && !enabledNamespaces_1_1.done && (_b = enabledNamespaces_1.return)) _b.call(enabledNamespaces_1);
-        }
-        finally { if (e_4) throw e_4.error; }
     }
     return false;
 }
 function disable() {
-    var result = enabledString || "";
+    const result = enabledString || "";
     enable("");
     return result;
 }
 function createDebugger(namespace) {
-    function debug() {
-        var args = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            args[_i] = arguments[_i];
-        }
+    const newDebugger = Object.assign(debug, {
+        enabled: enabled(namespace),
+        destroy,
+        log: debugObj.log,
+        namespace,
+        extend
+    });
+    function debug(...args) {
         if (!newDebugger.enabled) {
             return;
         }
         if (args.length > 0) {
-            args[0] = namespace + " " + args[0];
+            args[0] = `${namespace} ${args[0]}`;
         }
-        newDebugger.log.apply(newDebugger, tslib.__spread(args));
+        newDebugger.log(...args);
     }
-    var newDebugger = Object.assign(debug, {
-        enabled: enabled(namespace),
-        destroy: destroy,
-        log: debugObj.log,
-        namespace: namespace,
-        extend: extend
-    });
     debuggers.push(newDebugger);
     return newDebugger;
 }
 function destroy() {
-    var index = debuggers.indexOf(this);
+    const index = debuggers.indexOf(this);
     if (index >= 0) {
         debuggers.splice(index, 1);
         return true;
@@ -50052,49 +50982,37 @@ function destroy() {
     return false;
 }
 function extend(namespace) {
-    var newDebugger = createDebugger(this.namespace + ":" + namespace);
+    const newDebugger = createDebugger(`${this.namespace}:${namespace}`);
     newDebugger.log = this.log;
     return newDebugger;
 }
-var debugObj = Object.assign(function (namespace) {
-    return createDebugger(namespace);
-}, {
-    enable: enable,
-    enabled: enabled,
-    disable: disable,
-    log: log
-});
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var registeredLoggers = new Set();
-var logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
-var azureLogLevel;
+// Copyright (c) Microsoft Corporation.
+const registeredLoggers = new Set();
+const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
+let azureLogLevel;
 /**
  * The AzureLogger provides a mechanism for overriding where logs are output to.
  * By default, logs are sent to stderr.
  * Override the `log` method to redirect logs to another location.
  */
-var AzureLogger = debugObj("azure");
-AzureLogger.log = function () {
-    var args = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-        args[_i] = arguments[_i];
-    }
-    debugObj.log.apply(debugObj, tslib.__spread(args));
+const AzureLogger = debugObj("azure");
+AzureLogger.log = (...args) => {
+    debugObj.log(...args);
 };
-var AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
+const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
 if (logLevelFromEnv) {
     // avoid calling setLogLevel because we don't want a mis-set environment variable to crash
     if (isAzureLogLevel(logLevelFromEnv)) {
         setLogLevel(logLevelFromEnv);
     }
     else {
-        console.error("AZURE_LOG_LEVEL set to unknown log level '" + logLevelFromEnv + "'; logging is not enabled. Acceptable values: " + AZURE_LOG_LEVELS.join(", ") + ".");
+        console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`);
     }
 }
 /**
  * Immediately enables logging at the specified log level.
- * @param level The log level to enable for logging.
+ * @param level - The log level to enable for logging.
  * Options from most verbose to least verbose are:
  * - verbose
  * - info
@@ -50102,27 +51020,16 @@ if (logLevelFromEnv) {
  * - error
  */
 function setLogLevel(level) {
-    var e_1, _a;
     if (level && !isAzureLogLevel(level)) {
-        throw new Error("Unknown log level '" + level + "'. Acceptable values: " + AZURE_LOG_LEVELS.join(","));
+        throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`);
     }
     azureLogLevel = level;
-    var enabledNamespaces = [];
-    try {
-        for (var registeredLoggers_1 = tslib.__values(registeredLoggers), registeredLoggers_1_1 = registeredLoggers_1.next(); !registeredLoggers_1_1.done; registeredLoggers_1_1 = registeredLoggers_1.next()) {
-            var logger = registeredLoggers_1_1.value;
-            if (shouldEnable(logger)) {
-                enabledNamespaces.push(logger.namespace);
-            }
+    const enabledNamespaces = [];
+    for (const logger of registeredLoggers) {
+        if (shouldEnable(logger)) {
+            enabledNamespaces.push(logger.namespace);
         }
     }
-    catch (e_1_1) { e_1 = { error: e_1_1 }; }
-    finally {
-        try {
-            if (registeredLoggers_1_1 && !registeredLoggers_1_1.done && (_a = registeredLoggers_1.return)) _a.call(registeredLoggers_1);
-        }
-        finally { if (e_1) throw e_1.error; }
-    }
     debugObj.enable(enabledNamespaces.join(","));
 }
 /**
@@ -50131,7 +51038,7 @@ function setLogLevel(level) {
 function getLogLevel() {
     return azureLogLevel;
 }
-var levelMap = {
+const levelMap = {
     verbose: 400,
     info: 300,
     warning: 200,
@@ -50139,11 +51046,11 @@ var levelMap = {
 };
 /**
  * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.
- * @param namespace The name of the SDK package.
- * @ignore
+ * @param namespace - The name of the SDK package.
+ * @hidden
  */
 function createClientLogger(namespace) {
-    var clientRootLogger = AzureLogger.extend(namespace);
+    const clientRootLogger = AzureLogger.extend(namespace);
     patchLogMethod(AzureLogger, clientRootLogger);
     return {
         error: createLogger(clientRootLogger, "error"),
@@ -50153,21 +51060,17 @@ function createClientLogger(namespace) {
     };
 }
 function patchLogMethod(parent, child) {
-    child.log = function () {
-        var args = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            args[_i] = arguments[_i];
-        }
-        parent.log.apply(parent, tslib.__spread(args));
+    child.log = (...args) => {
+        parent.log(...args);
     };
 }
 function createLogger(parent, level) {
-    var logger = Object.assign(parent.extend(level), {
-        level: level
+    const logger = Object.assign(parent.extend(level), {
+        level
     });
     patchLogMethod(parent, logger);
     if (shouldEnable(logger)) {
-        var enabledNamespaces = debugObj.disable();
+        const enabledNamespaces = debugObj.disable();
         debugObj.enable(enabledNamespaces + "," + logger.namespace);
     }
     registeredLoggers.add(logger);
@@ -50231,151 +51134,1336 @@ exports.SocketTimeout = 5000;
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.CanonicalCode = void 0;
+exports.SpanStatusCode = void 0;
 /**
- * An enumeration of canonical status codes.
+ * An enumeration of status codes.
  */
-var CanonicalCode;
-(function (CanonicalCode) {
+var SpanStatusCode;
+(function (SpanStatusCode) {
     /**
-     * Not an error; returned on success
+     * The default status.
      */
-    CanonicalCode[CanonicalCode["OK"] = 0] = "OK";
+    SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
     /**
-     * The operation was cancelled (typically by the caller).
+     * The operation has been validated by an Application developer or
+     * Operator to have completed successfully.
      */
-    CanonicalCode[CanonicalCode["CANCELLED"] = 1] = "CANCELLED";
+    SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
     /**
-     * Unknown error.  An example of where this error may be returned is
-     * if a status value received from another address space belongs to
-     * an error-space that is not known in this address space.  Also
-     * errors raised by APIs that do not return enough error information
-     * may be converted to this error.
+     * The operation contains an error.
      */
-    CanonicalCode[CanonicalCode["UNKNOWN"] = 2] = "UNKNOWN";
-    /**
-     * Client specified an invalid argument.  Note that this differs
-     * from FAILED_PRECONDITION.  INVALID_ARGUMENT indicates arguments
-     * that are problematic regardless of the state of the system
-     * (e.g., a malformed file name).
-     */
-    CanonicalCode[CanonicalCode["INVALID_ARGUMENT"] = 3] = "INVALID_ARGUMENT";
-    /**
-     * Deadline expired before operation could complete.  For operations
-     * that change the state of the system, this error may be returned
-     * even if the operation has completed successfully.  For example, a
-     * successful response from a server could have been delayed long
-     * enough for the deadline to expire.
-     */
-    CanonicalCode[CanonicalCode["DEADLINE_EXCEEDED"] = 4] = "DEADLINE_EXCEEDED";
-    /**
-     * Some requested entity (e.g., file or directory) was not found.
-     */
-    CanonicalCode[CanonicalCode["NOT_FOUND"] = 5] = "NOT_FOUND";
-    /**
-     * Some entity that we attempted to create (e.g., file or directory)
-     * already exists.
-     */
-    CanonicalCode[CanonicalCode["ALREADY_EXISTS"] = 6] = "ALREADY_EXISTS";
-    /**
-     * The caller does not have permission to execute the specified
-     * operation.  PERMISSION_DENIED must not be used for rejections
-     * caused by exhausting some resource (use RESOURCE_EXHAUSTED
-     * instead for those errors).  PERMISSION_DENIED must not be
-     * used if the caller can not be identified (use UNAUTHENTICATED
-     * instead for those errors).
-     */
-    CanonicalCode[CanonicalCode["PERMISSION_DENIED"] = 7] = "PERMISSION_DENIED";
-    /**
-     * Some resource has been exhausted, perhaps a per-user quota, or
-     * perhaps the entire file system is out of space.
-     */
-    CanonicalCode[CanonicalCode["RESOURCE_EXHAUSTED"] = 8] = "RESOURCE_EXHAUSTED";
-    /**
-     * Operation was rejected because the system is not in a state
-     * required for the operation's execution.  For example, directory
-     * to be deleted may be non-empty, an rmdir operation is applied to
-     * a non-directory, etc.
-     *
-     * A litmus test that may help a service implementor in deciding
-     * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
-     *
-     *  - Use UNAVAILABLE if the client can retry just the failing call.
-     *  - Use ABORTED if the client should retry at a higher-level
-     *    (e.g., restarting a read-modify-write sequence).
-     *  - Use FAILED_PRECONDITION if the client should not retry until
-     *    the system state has been explicitly fixed.  E.g., if an "rmdir"
-     *    fails because the directory is non-empty, FAILED_PRECONDITION
-     *    should be returned since the client should not retry unless
-     *    they have first fixed up the directory by deleting files from it.
-     *  - Use FAILED_PRECONDITION if the client performs conditional
-     *    REST Get/Update/Delete on a resource and the resource on the
-     *    server does not match the condition. E.g., conflicting
-     *    read-modify-write on the same resource.
-     */
-    CanonicalCode[CanonicalCode["FAILED_PRECONDITION"] = 9] = "FAILED_PRECONDITION";
-    /**
-     * The operation was aborted, typically due to a concurrency issue
-     * like sequencer check failures, transaction aborts, etc.
-     *
-     * See litmus test above for deciding between FAILED_PRECONDITION,
-     * ABORTED, and UNAVAILABLE.
-     */
-    CanonicalCode[CanonicalCode["ABORTED"] = 10] = "ABORTED";
-    /**
-     * Operation was attempted past the valid range.  E.g., seeking or
-     * reading past end of file.
-     *
-     * Unlike INVALID_ARGUMENT, this error indicates a problem that may
-     * be fixed if the system state changes. For example, a 32-bit file
-     * system will generate INVALID_ARGUMENT if asked to read at an
-     * offset that is not in the range [0,2^32-1], but it will generate
-     * OUT_OF_RANGE if asked to read from an offset past the current
-     * file size.
-     *
-     * There is a fair bit of overlap between FAILED_PRECONDITION and
-     * OUT_OF_RANGE.  We recommend using OUT_OF_RANGE (the more specific
-     * error) when it applies so that callers who are iterating through
-     * a space can easily look for an OUT_OF_RANGE error to detect when
-     * they are done.
-     */
-    CanonicalCode[CanonicalCode["OUT_OF_RANGE"] = 11] = "OUT_OF_RANGE";
-    /**
-     * Operation is not implemented or not supported/enabled in this service.
-     */
-    CanonicalCode[CanonicalCode["UNIMPLEMENTED"] = 12] = "UNIMPLEMENTED";
-    /**
-     * Internal errors.  Means some invariants expected by underlying
-     * system has been broken.  If you see one of these errors,
-     * something is very broken.
-     */
-    CanonicalCode[CanonicalCode["INTERNAL"] = 13] = "INTERNAL";
-    /**
-     * The service is currently unavailable.  This is a most likely a
-     * transient condition and may be corrected by retrying with
-     * a backoff.
-     *
-     * See litmus test above for deciding between FAILED_PRECONDITION,
-     * ABORTED, and UNAVAILABLE.
-     */
-    CanonicalCode[CanonicalCode["UNAVAILABLE"] = 14] = "UNAVAILABLE";
-    /**
-     * Unrecoverable data loss or corruption.
-     */
-    CanonicalCode[CanonicalCode["DATA_LOSS"] = 15] = "DATA_LOSS";
-    /**
-     * The request does not have valid authentication credentials for the
-     * operation.
-     */
-    CanonicalCode[CanonicalCode["UNAUTHENTICATED"] = 16] = "UNAUTHENTICATED";
-})(CanonicalCode = exports.CanonicalCode || (exports.CanonicalCode = {}));
+    SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
+})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));
 //# sourceMappingURL=status.js.map
 
 /***/ }),
 /* 933 */,
 /* 934 */,
 /* 935 */,
-/* 936 */,
+/* 936 */
+/***/ (function(module, __unusedexports, __webpack_require__) {
+
+"use strict";
+
+const punycode = __webpack_require__(815);
+const tr46 = __webpack_require__(976);
+
+const specialSchemes = {
+  ftp: 21,
+  file: null,
+  gopher: 70,
+  http: 80,
+  https: 443,
+  ws: 80,
+  wss: 443
+};
+
+const failure = Symbol("failure");
+
+function countSymbols(str) {
+  return punycode.ucs2.decode(str).length;
+}
+
+function at(input, idx) {
+  const c = input[idx];
+  return isNaN(c) ? undefined : String.fromCodePoint(c);
+}
+
+function isASCIIDigit(c) {
+  return c >= 0x30 && c <= 0x39;
+}
+
+function isASCIIAlpha(c) {
+  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
+}
+
+function isASCIIAlphanumeric(c) {
+  return isASCIIAlpha(c) || isASCIIDigit(c);
+}
+
+function isASCIIHex(c) {
+  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
+}
+
+function isSingleDot(buffer) {
+  return buffer === "." || buffer.toLowerCase() === "%2e";
+}
+
+function isDoubleDot(buffer) {
+  buffer = buffer.toLowerCase();
+  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
+}
+
+function isWindowsDriveLetterCodePoints(cp1, cp2) {
+  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
+}
+
+function isWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
+}
+
+function isNormalizedWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
+}
+
+function containsForbiddenHostCodePoint(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function containsForbiddenHostCodePointExcludingPercent(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function isSpecialScheme(scheme) {
+  return specialSchemes[scheme] !== undefined;
+}
+
+function isSpecial(url) {
+  return isSpecialScheme(url.scheme);
+}
+
+function defaultPort(scheme) {
+  return specialSchemes[scheme];
+}
+
+function percentEncode(c) {
+  let hex = c.toString(16).toUpperCase();
+  if (hex.length === 1) {
+    hex = "0" + hex;
+  }
+
+  return "%" + hex;
+}
+
+function utf8PercentEncode(c) {
+  const buf = new Buffer(c);
+
+  let str = "";
+
+  for (let i = 0; i < buf.length; ++i) {
+    str += percentEncode(buf[i]);
+  }
+
+  return str;
+}
+
+function utf8PercentDecode(str) {
+  const input = new Buffer(str);
+  const output = [];
+  for (let i = 0; i < input.length; ++i) {
+    if (input[i] !== 37) {
+      output.push(input[i]);
+    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
+      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
+      i += 2;
+    } else {
+      output.push(input[i]);
+    }
+  }
+  return new Buffer(output).toString();
+}
+
+function isC0ControlPercentEncode(c) {
+  return c <= 0x1F || c > 0x7E;
+}
+
+const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
+function isPathPercentEncode(c) {
+  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
+}
+
+const extraUserinfoPercentEncodeSet =
+  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
+function isUserinfoPercentEncode(c) {
+  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
+}
+
+function percentEncodeChar(c, encodeSetPredicate) {
+  const cStr = String.fromCodePoint(c);
+
+  if (encodeSetPredicate(c)) {
+    return utf8PercentEncode(cStr);
+  }
+
+  return cStr;
+}
+
+function parseIPv4Number(input) {
+  let R = 10;
+
+  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
+    input = input.substring(2);
+    R = 16;
+  } else if (input.length >= 2 && input.charAt(0) === "0") {
+    input = input.substring(1);
+    R = 8;
+  }
+
+  if (input === "") {
+    return 0;
+  }
+
+  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
+  if (regex.test(input)) {
+    return failure;
+  }
+
+  return parseInt(input, R);
+}
+
+function parseIPv4(input) {
+  const parts = input.split(".");
+  if (parts[parts.length - 1] === "") {
+    if (parts.length > 1) {
+      parts.pop();
+    }
+  }
+
+  if (parts.length > 4) {
+    return input;
+  }
+
+  const numbers = [];
+  for (const part of parts) {
+    if (part === "") {
+      return input;
+    }
+    const n = parseIPv4Number(part);
+    if (n === failure) {
+      return input;
+    }
+
+    numbers.push(n);
+  }
+
+  for (let i = 0; i < numbers.length - 1; ++i) {
+    if (numbers[i] > 255) {
+      return failure;
+    }
+  }
+  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
+    return failure;
+  }
+
+  let ipv4 = numbers.pop();
+  let counter = 0;
+
+  for (const n of numbers) {
+    ipv4 += n * Math.pow(256, 3 - counter);
+    ++counter;
+  }
+
+  return ipv4;
+}
+
+function serializeIPv4(address) {
+  let output = "";
+  let n = address;
+
+  for (let i = 1; i <= 4; ++i) {
+    output = String(n % 256) + output;
+    if (i !== 4) {
+      output = "." + output;
+    }
+    n = Math.floor(n / 256);
+  }
+
+  return output;
+}
+
+function parseIPv6(input) {
+  const address = [0, 0, 0, 0, 0, 0, 0, 0];
+  let pieceIndex = 0;
+  let compress = null;
+  let pointer = 0;
+
+  input = punycode.ucs2.decode(input);
+
+  if (input[pointer] === 58) {
+    if (input[pointer + 1] !== 58) {
+      return failure;
+    }
+
+    pointer += 2;
+    ++pieceIndex;
+    compress = pieceIndex;
+  }
+
+  while (pointer < input.length) {
+    if (pieceIndex === 8) {
+      return failure;
+    }
+
+    if (input[pointer] === 58) {
+      if (compress !== null) {
+        return failure;
+      }
+      ++pointer;
+      ++pieceIndex;
+      compress = pieceIndex;
+      continue;
+    }
+
+    let value = 0;
+    let length = 0;
+
+    while (length < 4 && isASCIIHex(input[pointer])) {
+      value = value * 0x10 + parseInt(at(input, pointer), 16);
+      ++pointer;
+      ++length;
+    }
+
+    if (input[pointer] === 46) {
+      if (length === 0) {
+        return failure;
+      }
+
+      pointer -= length;
+
+      if (pieceIndex > 6) {
+        return failure;
+      }
+
+      let numbersSeen = 0;
+
+      while (input[pointer] !== undefined) {
+        let ipv4Piece = null;
+
+        if (numbersSeen > 0) {
+          if (input[pointer] === 46 && numbersSeen < 4) {
+            ++pointer;
+          } else {
+            return failure;
+          }
+        }
+
+        if (!isASCIIDigit(input[pointer])) {
+          return failure;
+        }
+
+        while (isASCIIDigit(input[pointer])) {
+          const number = parseInt(at(input, pointer));
+          if (ipv4Piece === null) {
+            ipv4Piece = number;
+          } else if (ipv4Piece === 0) {
+            return failure;
+          } else {
+            ipv4Piece = ipv4Piece * 10 + number;
+          }
+          if (ipv4Piece > 255) {
+            return failure;
+          }
+          ++pointer;
+        }
+
+        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
+
+        ++numbersSeen;
+
+        if (numbersSeen === 2 || numbersSeen === 4) {
+          ++pieceIndex;
+        }
+      }
+
+      if (numbersSeen !== 4) {
+        return failure;
+      }
+
+      break;
+    } else if (input[pointer] === 58) {
+      ++pointer;
+      if (input[pointer] === undefined) {
+        return failure;
+      }
+    } else if (input[pointer] !== undefined) {
+      return failure;
+    }
+
+    address[pieceIndex] = value;
+    ++pieceIndex;
+  }
+
+  if (compress !== null) {
+    let swaps = pieceIndex - compress;
+    pieceIndex = 7;
+    while (pieceIndex !== 0 && swaps > 0) {
+      const temp = address[compress + swaps - 1];
+      address[compress + swaps - 1] = address[pieceIndex];
+      address[pieceIndex] = temp;
+      --pieceIndex;
+      --swaps;
+    }
+  } else if (compress === null && pieceIndex !== 8) {
+    return failure;
+  }
+
+  return address;
+}
+
+function serializeIPv6(address) {
+  let output = "";
+  const seqResult = findLongestZeroSequence(address);
+  const compress = seqResult.idx;
+  let ignore0 = false;
+
+  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
+    if (ignore0 && address[pieceIndex] === 0) {
+      continue;
+    } else if (ignore0) {
+      ignore0 = false;
+    }
+
+    if (compress === pieceIndex) {
+      const separator = pieceIndex === 0 ? "::" : ":";
+      output += separator;
+      ignore0 = true;
+      continue;
+    }
+
+    output += address[pieceIndex].toString(16);
+
+    if (pieceIndex !== 7) {
+      output += ":";
+    }
+  }
+
+  return output;
+}
+
+function parseHost(input, isSpecialArg) {
+  if (input[0] === "[") {
+    if (input[input.length - 1] !== "]") {
+      return failure;
+    }
+
+    return parseIPv6(input.substring(1, input.length - 1));
+  }
+
+  if (!isSpecialArg) {
+    return parseOpaqueHost(input);
+  }
+
+  const domain = utf8PercentDecode(input);
+  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
+  if (asciiDomain === null) {
+    return failure;
+  }
+
+  if (containsForbiddenHostCodePoint(asciiDomain)) {
+    return failure;
+  }
+
+  const ipv4Host = parseIPv4(asciiDomain);
+  if (typeof ipv4Host === "number" || ipv4Host === failure) {
+    return ipv4Host;
+  }
+
+  return asciiDomain;
+}
+
+function parseOpaqueHost(input) {
+  if (containsForbiddenHostCodePointExcludingPercent(input)) {
+    return failure;
+  }
+
+  let output = "";
+  const decoded = punycode.ucs2.decode(input);
+  for (let i = 0; i < decoded.length; ++i) {
+    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
+  }
+  return output;
+}
+
+function findLongestZeroSequence(arr) {
+  let maxIdx = null;
+  let maxLen = 1; // only find elements > 1
+  let currStart = null;
+  let currLen = 0;
+
+  for (let i = 0; i < arr.length; ++i) {
+    if (arr[i] !== 0) {
+      if (currLen > maxLen) {
+        maxIdx = currStart;
+        maxLen = currLen;
+      }
+
+      currStart = null;
+      currLen = 0;
+    } else {
+      if (currStart === null) {
+        currStart = i;
+      }
+      ++currLen;
+    }
+  }
+
+  // if trailing zeros
+  if (currLen > maxLen) {
+    maxIdx = currStart;
+    maxLen = currLen;
+  }
+
+  return {
+    idx: maxIdx,
+    len: maxLen
+  };
+}
+
+function serializeHost(host) {
+  if (typeof host === "number") {
+    return serializeIPv4(host);
+  }
+
+  // IPv6 serializer
+  if (host instanceof Array) {
+    return "[" + serializeIPv6(host) + "]";
+  }
+
+  return host;
+}
+
+function trimControlChars(url) {
+  return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
+}
+
+function trimTabAndNewline(url) {
+  return url.replace(/\u0009|\u000A|\u000D/g, "");
+}
+
+function shortenPath(url) {
+  const path = url.path;
+  if (path.length === 0) {
+    return;
+  }
+  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
+    return;
+  }
+
+  path.pop();
+}
+
+function includesCredentials(url) {
+  return url.username !== "" || url.password !== "";
+}
+
+function cannotHaveAUsernamePasswordPort(url) {
+  return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
+}
+
+function isNormalizedWindowsDriveLetter(string) {
+  return /^[A-Za-z]:$/.test(string);
+}
+
+function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
+  this.pointer = 0;
+  this.input = input;
+  this.base = base || null;
+  this.encodingOverride = encodingOverride || "utf-8";
+  this.stateOverride = stateOverride;
+  this.url = url;
+  this.failure = false;
+  this.parseError = false;
+
+  if (!this.url) {
+    this.url = {
+      scheme: "",
+      username: "",
+      password: "",
+      host: null,
+      port: null,
+      path: [],
+      query: null,
+      fragment: null,
+
+      cannotBeABaseURL: false
+    };
+
+    const res = trimControlChars(this.input);
+    if (res !== this.input) {
+      this.parseError = true;
+    }
+    this.input = res;
+  }
+
+  const res = trimTabAndNewline(this.input);
+  if (res !== this.input) {
+    this.parseError = true;
+  }
+  this.input = res;
+
+  this.state = stateOverride || "scheme start";
+
+  this.buffer = "";
+  this.atFlag = false;
+  this.arrFlag = false;
+  this.passwordTokenSeenFlag = false;
+
+  this.input = punycode.ucs2.decode(this.input);
+
+  for (; this.pointer <= this.input.length; ++this.pointer) {
+    const c = this.input[this.pointer];
+    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
+
+    // exec state machine
+    const ret = this["parse " + this.state](c, cStr);
+    if (!ret) {
+      break; // terminate algorithm
+    } else if (ret === failure) {
+      this.failure = true;
+      break;
+    }
+  }
+}
+
+URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
+  if (isASCIIAlpha(c)) {
+    this.buffer += cStr.toLowerCase();
+    this.state = "scheme";
+  } else if (!this.stateOverride) {
+    this.state = "no scheme";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
+  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
+    this.buffer += cStr.toLowerCase();
+  } else if (c === 58) {
+    if (this.stateOverride) {
+      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
+        return false;
+      }
+
+      if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
+        return false;
+      }
+    }
+    this.url.scheme = this.buffer;
+    this.buffer = "";
+    if (this.stateOverride) {
+      return false;
+    }
+    if (this.url.scheme === "file") {
+      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
+        this.parseError = true;
+      }
+      this.state = "file";
+    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
+      this.state = "special relative or authority";
+    } else if (isSpecial(this.url)) {
+      this.state = "special authority slashes";
+    } else if (this.input[this.pointer + 1] === 47) {
+      this.state = "path or authority";
+      ++this.pointer;
+    } else {
+      this.url.cannotBeABaseURL = true;
+      this.url.path.push("");
+      this.state = "cannot-be-a-base-URL path";
+    }
+  } else if (!this.stateOverride) {
+    this.buffer = "";
+    this.state = "no scheme";
+    this.pointer = -1;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
+  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
+    return failure;
+  } else if (this.base.cannotBeABaseURL && c === 35) {
+    this.url.scheme = this.base.scheme;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.url.cannotBeABaseURL = true;
+    this.state = "fragment";
+  } else if (this.base.scheme === "file") {
+    this.state = "file";
+    --this.pointer;
+  } else {
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
+  if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
+  this.url.scheme = this.base.scheme;
+  if (isNaN(c)) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+  } else if (c === 47) {
+    this.state = "relative slash";
+  } else if (c === 63) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (isSpecial(this.url) && c === 92) {
+    this.parseError = true;
+    this.state = "relative slash";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice(0, this.base.path.length - 1);
+
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
+  if (isSpecial(this.url) && (c === 47 || c === 92)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "special authority ignore slashes";
+  } else if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "special authority ignore slashes";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
+  if (c !== 47 && c !== 92) {
+    this.state = "authority";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
+  if (c === 64) {
+    this.parseError = true;
+    if (this.atFlag) {
+      this.buffer = "%40" + this.buffer;
+    }
+    this.atFlag = true;
+
+    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
+    const len = countSymbols(this.buffer);
+    for (let pointer = 0; pointer < len; ++pointer) {
+      const codePoint = this.buffer.codePointAt(pointer);
+
+      if (codePoint === 58 && !this.passwordTokenSeenFlag) {
+        this.passwordTokenSeenFlag = true;
+        continue;
+      }
+      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
+      if (this.passwordTokenSeenFlag) {
+        this.url.password += encodedCodePoints;
+      } else {
+        this.url.username += encodedCodePoints;
+      }
+    }
+    this.buffer = "";
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    if (this.atFlag && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+    this.pointer -= countSymbols(this.buffer) + 1;
+    this.buffer = "";
+    this.state = "host";
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse hostname"] =
+URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
+  if (this.stateOverride && this.url.scheme === "file") {
+    --this.pointer;
+    this.state = "file host";
+  } else if (c === 58 && !this.arrFlag) {
+    if (this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "port";
+    if (this.stateOverride === "hostname") {
+      return false;
+    }
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    --this.pointer;
+    if (isSpecial(this.url) && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    } else if (this.stateOverride && this.buffer === "" &&
+               (includesCredentials(this.url) || this.url.port !== null)) {
+      this.parseError = true;
+      return false;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "path start";
+    if (this.stateOverride) {
+      return false;
+    }
+  } else {
+    if (c === 91) {
+      this.arrFlag = true;
+    } else if (c === 93) {
+      this.arrFlag = false;
+    }
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
+  if (isASCIIDigit(c)) {
+    this.buffer += cStr;
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92) ||
+             this.stateOverride) {
+    if (this.buffer !== "") {
+      const port = parseInt(this.buffer);
+      if (port > Math.pow(2, 16) - 1) {
+        this.parseError = true;
+        return failure;
+      }
+      this.url.port = port === defaultPort(this.url.scheme) ? null : port;
+      this.buffer = "";
+    }
+    if (this.stateOverride) {
+      return false;
+    }
+    this.state = "path start";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
+
+URLStateMachine.prototype["parse file"] = function parseFile(c) {
+  this.url.scheme = "file";
+
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file slash";
+  } else if (this.base !== null && this.base.scheme === "file") {
+    if (isNaN(c)) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+    } else if (c === 63) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = "";
+      this.state = "query";
+    } else if (c === 35) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+      this.url.fragment = "";
+      this.state = "fragment";
+    } else {
+      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
+          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
+          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
+           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
+        this.url.host = this.base.host;
+        this.url.path = this.base.path.slice();
+        shortenPath(this.url);
+      } else {
+        this.parseError = true;
+      }
+
+      this.state = "path";
+      --this.pointer;
+    }
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file host";
+  } else {
+    if (this.base !== null && this.base.scheme === "file") {
+      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
+        this.url.path.push(this.base.path[0]);
+      } else {
+        this.url.host = this.base.host;
+      }
+    }
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
+  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
+    --this.pointer;
+    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
+      this.parseError = true;
+      this.state = "path";
+    } else if (this.buffer === "") {
+      this.url.host = "";
+      if (this.stateOverride) {
+        return false;
+      }
+      this.state = "path start";
+    } else {
+      let host = parseHost(this.buffer, isSpecial(this.url));
+      if (host === failure) {
+        return failure;
+      }
+      if (host === "localhost") {
+        host = "";
+      }
+      this.url.host = host;
+
+      if (this.stateOverride) {
+        return false;
+      }
+
+      this.buffer = "";
+      this.state = "path start";
+    }
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
+  if (isSpecial(this.url)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "path";
+
+    if (c !== 47 && c !== 92) {
+      --this.pointer;
+    }
+  } else if (!this.stateOverride && c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (!this.stateOverride && c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (c !== undefined) {
+    this.state = "path";
+    if (c !== 47) {
+      --this.pointer;
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path"] = function parsePath(c) {
+  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
+      (!this.stateOverride && (c === 63 || c === 35))) {
+    if (isSpecial(this.url) && c === 92) {
+      this.parseError = true;
+    }
+
+    if (isDoubleDot(this.buffer)) {
+      shortenPath(this.url);
+      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
+        this.url.path.push("");
+      }
+    } else if (isSingleDot(this.buffer) && c !== 47 &&
+               !(isSpecial(this.url) && c === 92)) {
+      this.url.path.push("");
+    } else if (!isSingleDot(this.buffer)) {
+      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
+        if (this.url.host !== "" && this.url.host !== null) {
+          this.parseError = true;
+          this.url.host = "";
+        }
+        this.buffer = this.buffer[0] + ":";
+      }
+      this.url.path.push(this.buffer);
+    }
+    this.buffer = "";
+    if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
+      while (this.url.path.length > 1 && this.url.path[0] === "") {
+        this.parseError = true;
+        this.url.path.shift();
+      }
+    }
+    if (c === 63) {
+      this.url.query = "";
+      this.state = "query";
+    }
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += percentEncodeChar(c, isPathPercentEncode);
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
+  if (c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else {
+    // TODO: Add: not a URL code point
+    if (!isNaN(c) && c !== 37) {
+      this.parseError = true;
+    }
+
+    if (c === 37 &&
+        (!isASCIIHex(this.input[this.pointer + 1]) ||
+         !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    if (!isNaN(c)) {
+      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
+  if (isNaN(c) || (!this.stateOverride && c === 35)) {
+    if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
+      this.encodingOverride = "utf-8";
+    }
+
+    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
+    for (let i = 0; i < buffer.length; ++i) {
+      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
+          buffer[i] === 0x3C || buffer[i] === 0x3E) {
+        this.url.query += percentEncode(buffer[i]);
+      } else {
+        this.url.query += String.fromCodePoint(buffer[i]);
+      }
+    }
+
+    this.buffer = "";
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
+  if (isNaN(c)) { // do nothing
+  } else if (c === 0x0) {
+    this.parseError = true;
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
+  }
+
+  return true;
+};
+
+function serializeURL(url, excludeFragment) {
+  let output = url.scheme + ":";
+  if (url.host !== null) {
+    output += "//";
+
+    if (url.username !== "" || url.password !== "") {
+      output += url.username;
+      if (url.password !== "") {
+        output += ":" + url.password;
+      }
+      output += "@";
+    }
+
+    output += serializeHost(url.host);
+
+    if (url.port !== null) {
+      output += ":" + url.port;
+    }
+  } else if (url.host === null && url.scheme === "file") {
+    output += "//";
+  }
+
+  if (url.cannotBeABaseURL) {
+    output += url.path[0];
+  } else {
+    for (const string of url.path) {
+      output += "/" + string;
+    }
+  }
+
+  if (url.query !== null) {
+    output += "?" + url.query;
+  }
+
+  if (!excludeFragment && url.fragment !== null) {
+    output += "#" + url.fragment;
+  }
+
+  return output;
+}
+
+function serializeOrigin(tuple) {
+  let result = tuple.scheme + "://";
+  result += serializeHost(tuple.host);
+
+  if (tuple.port !== null) {
+    result += ":" + tuple.port;
+  }
+
+  return result;
+}
+
+module.exports.serializeURL = serializeURL;
+
+module.exports.serializeURLOrigin = function (url) {
+  // https://url.spec.whatwg.org/#concept-url-origin
+  switch (url.scheme) {
+    case "blob":
+      try {
+        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
+      } catch (e) {
+        // serializing an opaque origin returns "null"
+        return "null";
+      }
+    case "ftp":
+    case "gopher":
+    case "http":
+    case "https":
+    case "ws":
+    case "wss":
+      return serializeOrigin({
+        scheme: url.scheme,
+        host: url.host,
+        port: url.port
+      });
+    case "file":
+      // spec says "exercise to the reader", chrome says "file://"
+      return "file://";
+    default:
+      // serializing an opaque origin returns "null"
+      return "null";
+  }
+};
+
+module.exports.basicURLParse = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
+  if (usm.failure) {
+    return "failure";
+  }
+
+  return usm.url;
+};
+
+module.exports.setTheUsername = function (url, username) {
+  url.username = "";
+  const decoded = punycode.ucs2.decode(username);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.setThePassword = function (url, password) {
+  url.password = "";
+  const decoded = punycode.ucs2.decode(password);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.serializeHost = serializeHost;
+
+module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
+
+module.exports.serializeInteger = function (integer) {
+  return String(integer);
+};
+
+module.exports.parseURL = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  // We don't handle blobs, so this just delegates:
+  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
+};
+
+
+/***/ }),
 /* 937 */,
 /* 938 */,
 /* 939 */
@@ -50549,9 +52637,32 @@ exports.checkBypass = checkBypass;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const path = __webpack_require__(622);
+exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0;
+const path = __importStar(__webpack_require__(622));
+const assert_1 = __importDefault(__webpack_require__(357));
 const IS_WINDOWS = process.platform === 'win32';
 /**
  * Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths.
@@ -50591,8 +52702,8 @@ exports.dirname = dirname;
  * or `C:` are expanded based on the current working directory.
  */
 function ensureAbsoluteRoot(root, itemPath) {
-    assert(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
-    assert(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
+    assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
+    assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
     // Already rooted
     if (hasAbsoluteRoot(itemPath)) {
         return itemPath;
@@ -50602,7 +52713,7 @@ function ensureAbsoluteRoot(root, itemPath) {
         // Check for itemPath like C: or C:foo
         if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) {
             let cwd = process.cwd();
-            assert(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
+            assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
             // Drive letter matches cwd? Expand to cwd
             if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) {
                 // Drive only, e.g. C:
@@ -50627,11 +52738,11 @@ function ensureAbsoluteRoot(root, itemPath) {
         // Check for itemPath like \ or \foo
         else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) {
             const cwd = process.cwd();
-            assert(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
+            assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
             return `${cwd[0]}:\\${itemPath.substr(1)}`;
         }
     }
-    assert(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
+    assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
     // Otherwise ensure root ends with a separator
     if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) {
         // Intentionally empty
@@ -50648,7 +52759,7 @@ exports.ensureAbsoluteRoot = ensureAbsoluteRoot;
  * `\\hello\share` and `C:\hello` (and using alternate separator).
  */
 function hasAbsoluteRoot(itemPath) {
-    assert(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
+    assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
     // Normalize separators
     itemPath = normalizeSeparators(itemPath);
     // Windows
@@ -50665,7 +52776,7 @@ exports.hasAbsoluteRoot = hasAbsoluteRoot;
  * `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator).
  */
 function hasRoot(itemPath) {
-    assert(itemPath, `isRooted parameter 'itemPath' must not be empty`);
+    assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`);
     // Normalize separators
     itemPath = normalizeSeparators(itemPath);
     // Windows
@@ -50760,56 +52871,203 @@ var TraceFlags;
 
 /***/ }),
 /* 976 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/***/ (function(module, __unusedexports, __webpack_require__) {
 
 "use strict";
 
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_TRACE_API_KEY = exports.GLOBAL_PROPAGATION_API_KEY = exports.GLOBAL_METRICS_API_KEY = exports.GLOBAL_CONTEXT_MANAGER_API_KEY = void 0;
-var platform_1 = __webpack_require__(910);
-exports.GLOBAL_CONTEXT_MANAGER_API_KEY = Symbol.for('io.opentelemetry.js.api.context');
-exports.GLOBAL_METRICS_API_KEY = Symbol.for('io.opentelemetry.js.api.metrics');
-exports.GLOBAL_PROPAGATION_API_KEY = Symbol.for('io.opentelemetry.js.api.propagation');
-exports.GLOBAL_TRACE_API_KEY = Symbol.for('io.opentelemetry.js.api.trace');
-exports._global = platform_1._globalThis;
-/**
- * Make a function which accepts a version integer and returns the instance of an API if the version
- * is compatible, or a fallback version (usually NOOP) if it is not.
- *
- * @param requiredVersion Backwards compatibility version which is required to return the instance
- * @param instance Instance which should be returned if the required version is compatible
- * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible
- */
-function makeGetter(requiredVersion, instance, fallback) {
-    return function (version) {
-        return version === requiredVersion ? instance : fallback;
-    };
+
+var punycode = __webpack_require__(815);
+var mappingTable = __webpack_require__(482);
+
+var PROCESSING_OPTIONS = {
+  TRANSITIONAL: 0,
+  NONTRANSITIONAL: 1
+};
+
+function normalize(str) { // fix bug in v8
+  return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
 }
-exports.makeGetter = makeGetter;
-/**
- * A number which should be incremented each time a backwards incompatible
- * change is made to the API. This number is used when an API package
- * attempts to access the global API to ensure it is getting a compatible
- * version. If the global API is not compatible with the API package
- * attempting to get it, a NOOP API implementation will be returned.
- */
-exports.API_BACKWARDS_COMPATIBILITY_VERSION = 0;
-//# sourceMappingURL=global-utils.js.map
+
+function findStatus(val) {
+  var start = 0;
+  var end = mappingTable.length - 1;
+
+  while (start <= end) {
+    var mid = Math.floor((start + end) / 2);
+
+    var target = mappingTable[mid];
+    if (target[0][0] <= val && target[0][1] >= val) {
+      return target;
+    } else if (target[0][0] > val) {
+      end = mid - 1;
+    } else {
+      start = mid + 1;
+    }
+  }
+
+  return null;
+}
+
+var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+
+function countSymbols(string) {
+  return string
+    // replace every surrogate pair with a BMP symbol
+    .replace(regexAstralSymbols, '_')
+    // then get the length
+    .length;
+}
+
+function mapChars(domain_name, useSTD3, processing_option) {
+  var hasError = false;
+  var processed = "";
+
+  var len = countSymbols(domain_name);
+  for (var i = 0; i < len; ++i) {
+    var codePoint = domain_name.codePointAt(i);
+    var status = findStatus(codePoint);
+
+    switch (status[1]) {
+      case "disallowed":
+        hasError = true;
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "ignored":
+        break;
+      case "mapped":
+        processed += String.fromCodePoint.apply(String, status[2]);
+        break;
+      case "deviation":
+        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        } else {
+          processed += String.fromCodePoint(codePoint);
+        }
+        break;
+      case "valid":
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "disallowed_STD3_mapped":
+        if (useSTD3) {
+          hasError = true;
+          processed += String.fromCodePoint(codePoint);
+        } else {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        }
+        break;
+      case "disallowed_STD3_valid":
+        if (useSTD3) {
+          hasError = true;
+        }
+
+        processed += String.fromCodePoint(codePoint);
+        break;
+    }
+  }
+
+  return {
+    string: processed,
+    error: hasError
+  };
+}
+
+var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
+
+function validateLabel(label, processing_option) {
+  if (label.substr(0, 4) === "xn--") {
+    label = punycode.toUnicode(label);
+    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
+  }
+
+  var error = false;
+
+  if (normalize(label) !== label ||
+      (label[3] === "-" && label[4] === "-") ||
+      label[0] === "-" || label[label.length - 1] === "-" ||
+      label.indexOf(".") !== -1 ||
+      label.search(combiningMarksRegex) === 0) {
+    error = true;
+  }
+
+  var len = countSymbols(label);
+  for (var i = 0; i < len; ++i) {
+    var status = findStatus(label.codePointAt(i));
+    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
+        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
+         status[1] !== "valid" && status[1] !== "deviation")) {
+      error = true;
+      break;
+    }
+  }
+
+  return {
+    label: label,
+    error: error
+  };
+}
+
+function processing(domain_name, useSTD3, processing_option) {
+  var result = mapChars(domain_name, useSTD3, processing_option);
+  result.string = normalize(result.string);
+
+  var labels = result.string.split(".");
+  for (var i = 0; i < labels.length; ++i) {
+    try {
+      var validation = validateLabel(labels[i]);
+      labels[i] = validation.label;
+      result.error = result.error || validation.error;
+    } catch(e) {
+      result.error = true;
+    }
+  }
+
+  return {
+    string: labels.join("."),
+    error: result.error
+  };
+}
+
+module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
+  var result = processing(domain_name, useSTD3, processing_option);
+  var labels = result.string.split(".");
+  labels = labels.map(function(l) {
+    try {
+      return punycode.toASCII(l);
+    } catch(e) {
+      result.error = true;
+      return l;
+    }
+  });
+
+  if (verifyDnsLength) {
+    var total = labels.slice(0, labels.length - 1).join(".").length;
+    if (total.length > 253 || total.length === 0) {
+      result.error = true;
+    }
+
+    for (var i=0; i < labels.length; ++i) {
+      if (labels.length > 63 || labels.length === 0) {
+        result.error = true;
+        break;
+      }
+    }
+  }
+
+  if (result.error) return null;
+  return labels.join(".");
+};
+
+module.exports.toUnicode = function(domain_name, useSTD3) {
+  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
+
+  return {
+    domain: result.string,
+    error: result.error
+  };
+};
+
+module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
+
 
 /***/ }),
 /* 977 */,
@@ -50826,6 +53084,25 @@ exports.API_BACKWARDS_COMPATIBILITY_VERSION = 0;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -50835,14 +53112,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.getExecOutput = exports.exec = void 0;
+const string_decoder_1 = __webpack_require__(304);
 const tr = __importStar(__webpack_require__(9));
 /**
  * Exec a command.
@@ -50868,10 +53140,182 @@ function exec(commandLine, args, options) {
     });
 }
 exports.exec = exec;
+/**
+ * Exec a command and get the output.
+ * Output will be streamed to the live console.
+ * Returns promise with the exit code and collected stdout and stderr
+ *
+ * @param     commandLine           command to execute (can include additional args). Must be correctly escaped.
+ * @param     args                  optional arguments for tool. Escaping is handled by the lib.
+ * @param     options               optional exec options.  See ExecOptions
+ * @returns   Promise<ExecOutput>   exit code, stdout, and stderr
+ */
+function getExecOutput(commandLine, args, options) {
+    var _a, _b;
+    return __awaiter(this, void 0, void 0, function* () {
+        let stdout = '';
+        let stderr = '';
+        //Using string decoder covers the case where a mult-byte character is split
+        const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');
+        const stderrDecoder = new string_decoder_1.StringDecoder('utf8');
+        const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;
+        const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;
+        const stdErrListener = (data) => {
+            stderr += stderrDecoder.write(data);
+            if (originalStdErrListener) {
+                originalStdErrListener(data);
+            }
+        };
+        const stdOutListener = (data) => {
+            stdout += stdoutDecoder.write(data);
+            if (originalStdoutListener) {
+                originalStdoutListener(data);
+            }
+        };
+        const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });
+        const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));
+        //flush any remaining characters
+        stdout += stdoutDecoder.end();
+        stderr += stderrDecoder.end();
+        return {
+            exitCode,
+            stdout,
+            stderr
+        };
+    });
+}
+exports.getExecOutput = getExecOutput;
 //# sourceMappingURL=exec.js.map
 
 /***/ }),
-/* 987 */,
+/* 987 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isCompatible = exports._makeCompatibilityCheck = void 0;
+var version_1 = __webpack_require__(830);
+var re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
+/**
+ * Create a function to test an API version to see if it is compatible with the provided ownVersion.
+ *
+ * The returned function has the following semantics:
+ * - Exact match is always compatible
+ * - Major versions must match exactly
+ *    - 1.x package cannot use global 2.x package
+ *    - 2.x package cannot use global 1.x package
+ * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
+ *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
+ *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
+ * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
+ * - Patch and build tag differences are not considered at this time
+ *
+ * @param ownVersion version which should be checked against
+ */
+function _makeCompatibilityCheck(ownVersion) {
+    var acceptedVersions = new Set([ownVersion]);
+    var rejectedVersions = new Set();
+    var myVersionMatch = ownVersion.match(re);
+    if (!myVersionMatch) {
+        // we cannot guarantee compatibility so we always return noop
+        return function () { return false; };
+    }
+    var ownVersionParsed = {
+        major: +myVersionMatch[1],
+        minor: +myVersionMatch[2],
+        patch: +myVersionMatch[3],
+        prerelease: myVersionMatch[4],
+    };
+    // if ownVersion has a prerelease tag, versions must match exactly
+    if (ownVersionParsed.prerelease != null) {
+        return function isExactmatch(globalVersion) {
+            return globalVersion === ownVersion;
+        };
+    }
+    function _reject(v) {
+        rejectedVersions.add(v);
+        return false;
+    }
+    function _accept(v) {
+        acceptedVersions.add(v);
+        return true;
+    }
+    return function isCompatible(globalVersion) {
+        if (acceptedVersions.has(globalVersion)) {
+            return true;
+        }
+        if (rejectedVersions.has(globalVersion)) {
+            return false;
+        }
+        var globalVersionMatch = globalVersion.match(re);
+        if (!globalVersionMatch) {
+            // cannot parse other version
+            // we cannot guarantee compatibility so we always noop
+            return _reject(globalVersion);
+        }
+        var globalVersionParsed = {
+            major: +globalVersionMatch[1],
+            minor: +globalVersionMatch[2],
+            patch: +globalVersionMatch[3],
+            prerelease: globalVersionMatch[4],
+        };
+        // if globalVersion has a prerelease tag, versions must match exactly
+        if (globalVersionParsed.prerelease != null) {
+            return _reject(globalVersion);
+        }
+        // major versions must match
+        if (ownVersionParsed.major !== globalVersionParsed.major) {
+            return _reject(globalVersion);
+        }
+        if (ownVersionParsed.major === 0) {
+            if (ownVersionParsed.minor === globalVersionParsed.minor &&
+                ownVersionParsed.patch <= globalVersionParsed.patch) {
+                return _accept(globalVersion);
+            }
+            return _reject(globalVersion);
+        }
+        if (ownVersionParsed.minor <= globalVersionParsed.minor) {
+            return _accept(globalVersion);
+        }
+        return _reject(globalVersion);
+    };
+}
+exports._makeCompatibilityCheck = _makeCompatibilityCheck;
+/**
+ * Test an API version to see if it is compatible with this API.
+ *
+ * - Exact match is always compatible
+ * - Major versions must match exactly
+ *    - 1.x package cannot use global 2.x package
+ *    - 2.x package cannot use global 1.x package
+ * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
+ *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
+ *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
+ * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
+ * - Patch and build tag differences are not considered at this time
+ *
+ * @param version version of the API requesting an instance of the global API
+ */
+exports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);
+//# sourceMappingURL=semver.js.map
+
+/***/ }),
 /* 988 */,
 /* 989 */,
 /* 990 */,
@@ -50937,7 +53381,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(865);
 var uuid = __webpack_require__(585);
 var tough = __webpack_require__(393);
 var http = __webpack_require__(605);
@@ -50946,14 +53389,16 @@ var node_fetch = _interopDefault(__webpack_require__(454));
 var abortController = __webpack_require__(106);
 var FormData = _interopDefault(__webpack_require__(790));
 var util = __webpack_require__(669);
+var url = __webpack_require__(835);
 var stream = __webpack_require__(794);
-var tunnel = __webpack_require__(413);
-var coreAuth = __webpack_require__(229);
 var logger$1 = __webpack_require__(928);
+var tunnel = __webpack_require__(413);
+var tslib = __webpack_require__(865);
+var coreAuth = __webpack_require__(229);
 var xml2js = __webpack_require__(992);
 var os = __webpack_require__(87);
 var coreTracing = __webpack_require__(263);
-var api = __webpack_require__(440);
+__webpack_require__(71);
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -50964,31 +53409,31 @@ function getHeaderKey(headerName) {
     return headerName.toLowerCase();
 }
 function isHttpHeadersLike(object) {
-    if (!object || typeof object !== "object") {
-        return false;
-    }
-    if (typeof object.rawHeaders === "function" &&
-        typeof object.clone === "function" &&
-        typeof object.get === "function" &&
-        typeof object.set === "function" &&
-        typeof object.contains === "function" &&
-        typeof object.remove === "function" &&
-        typeof object.headersArray === "function" &&
-        typeof object.headerValues === "function" &&
-        typeof object.headerNames === "function" &&
-        typeof object.toJson === "function") {
-        return true;
+    if (object && typeof object === "object") {
+        const castObject = object;
+        if (typeof castObject.rawHeaders === "function" &&
+            typeof castObject.clone === "function" &&
+            typeof castObject.get === "function" &&
+            typeof castObject.set === "function" &&
+            typeof castObject.contains === "function" &&
+            typeof castObject.remove === "function" &&
+            typeof castObject.headersArray === "function" &&
+            typeof castObject.headerValues === "function" &&
+            typeof castObject.headerNames === "function" &&
+            typeof castObject.toJson === "function") {
+            return true;
+        }
     }
     return false;
 }
 /**
  * A collection of HTTP header key/value pairs.
  */
-var HttpHeaders = /** @class */ (function () {
-    function HttpHeaders(rawHeaders) {
+class HttpHeaders {
+    constructor(rawHeaders) {
         this._headersMap = {};
         if (rawHeaders) {
-            for (var headerName in rawHeaders) {
+            for (const headerName in rawHeaders) {
                 this.set(headerName, rawHeaders[headerName]);
             }
         }
@@ -50996,126 +53441,130 @@ var HttpHeaders = /** @class */ (function () {
     /**
      * Set a header in this collection with the provided name and value. The name is
      * case-insensitive.
-     * @param headerName The name of the header to set. This value is case-insensitive.
-     * @param headerValue The value of the header to set.
+     * @param headerName - The name of the header to set. This value is case-insensitive.
+     * @param headerValue - The value of the header to set.
      */
-    HttpHeaders.prototype.set = function (headerName, headerValue) {
+    set(headerName, headerValue) {
         this._headersMap[getHeaderKey(headerName)] = {
             name: headerName,
             value: headerValue.toString()
         };
-    };
+    }
     /**
      * Get the header value for the provided header name, or undefined if no header exists in this
      * collection with the provided name.
-     * @param headerName The name of the header.
+     * @param headerName - The name of the header.
      */
-    HttpHeaders.prototype.get = function (headerName) {
-        var header = this._headersMap[getHeaderKey(headerName)];
+    get(headerName) {
+        const header = this._headersMap[getHeaderKey(headerName)];
         return !header ? undefined : header.value;
-    };
+    }
     /**
      * Get whether or not this header collection contains a header entry for the provided header name.
      */
-    HttpHeaders.prototype.contains = function (headerName) {
+    contains(headerName) {
         return !!this._headersMap[getHeaderKey(headerName)];
-    };
+    }
     /**
      * Remove the header with the provided headerName. Return whether or not the header existed and
      * was removed.
-     * @param headerName The name of the header to remove.
+     * @param headerName - The name of the header to remove.
      */
-    HttpHeaders.prototype.remove = function (headerName) {
-        var result = this.contains(headerName);
+    remove(headerName) {
+        const result = this.contains(headerName);
         delete this._headersMap[getHeaderKey(headerName)];
         return result;
-    };
+    }
     /**
      * Get the headers that are contained this collection as an object.
      */
-    HttpHeaders.prototype.rawHeaders = function () {
-        var result = {};
-        for (var headerKey in this._headersMap) {
-            var header = this._headersMap[headerKey];
+    rawHeaders() {
+        const result = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
             result[header.name.toLowerCase()] = header.value;
         }
         return result;
-    };
+    }
     /**
      * Get the headers that are contained in this collection as an array.
      */
-    HttpHeaders.prototype.headersArray = function () {
-        var headers = [];
-        for (var headerKey in this._headersMap) {
+    headersArray() {
+        const headers = [];
+        for (const headerKey in this._headersMap) {
             headers.push(this._headersMap[headerKey]);
         }
         return headers;
-    };
+    }
     /**
      * Get the header names that are contained in this collection.
      */
-    HttpHeaders.prototype.headerNames = function () {
-        var headerNames = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerNames() {
+        const headerNames = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerNames.push(headers[i].name);
         }
         return headerNames;
-    };
+    }
     /**
      * Get the header values that are contained in this collection.
      */
-    HttpHeaders.prototype.headerValues = function () {
-        var headerValues = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerValues() {
+        const headerValues = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerValues.push(headers[i].value);
         }
         return headerValues;
-    };
+    }
     /**
      * Get the JSON object representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toJson = function () {
+    toJson() {
         return this.rawHeaders();
-    };
+    }
     /**
      * Get the string representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toString = function () {
+    toString() {
         return JSON.stringify(this.toJson());
-    };
+    }
     /**
      * Create a deep clone/copy of this HttpHeaders collection.
      */
-    HttpHeaders.prototype.clone = function () {
-        return new HttpHeaders(this.rawHeaders());
-    };
-    return HttpHeaders;
-}());
+    clone() {
+        const resultPreservingCasing = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
+            resultPreservingCasing[header.name] = header.value;
+        }
+        return new HttpHeaders(resultPreservingCasing);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Encodes a string in base64 format.
- * @param value the string to encode
+ * @param value - The string to encode
  */
 function encodeString(value) {
     return Buffer.from(value).toString("base64");
 }
 /**
  * Encodes a byte array in base64 format.
- * @param value the Uint8Aray to encode
+ * @param value - The Uint8Aray to encode
  */
 function encodeByteArray(value) {
     // Buffer.from accepts <ArrayBuffer> | <SharedArrayBuffer>-- the TypeScript definition is off here
     // https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
-    var bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
+    const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
     return bufferValue.toString("base64");
 }
 /**
  * Decodes a base64 string into a byte array.
- * @param value the base64 string to decode
+ * @param value - The base64 string to decode
  */
 function decodeString(value) {
     return Buffer.from(value, "base64");
@@ -51123,61 +53572,38 @@ function decodeString(value) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var Constants = {
+const Constants = {
     /**
      * The core-http version
-     * @const
-     * @type {string}
      */
-    coreHttpVersion: "1.1.9",
+    coreHttpVersion: "2.2.2",
     /**
      * Specifies HTTP.
-     *
-     * @const
-     * @type {string}
      */
     HTTP: "http:",
     /**
      * Specifies HTTPS.
-     *
-     * @const
-     * @type {string}
      */
     HTTPS: "https:",
     /**
      * Specifies HTTP Proxy.
-     *
-     * @const
-     * @type {string}
      */
     HTTP_PROXY: "HTTP_PROXY",
     /**
      * Specifies HTTPS Proxy.
-     *
-     * @const
-     * @type {string}
      */
     HTTPS_PROXY: "HTTPS_PROXY",
     /**
      * Specifies NO Proxy.
-     *
-     * @const
-     * @type {string}
      */
     NO_PROXY: "NO_PROXY",
     /**
      * Specifies ALL Proxy.
-     *
-     * @const
-     * @type {string}
      */
     ALL_PROXY: "ALL_PROXY",
     HttpConstants: {
         /**
          * Http Verbs
-         *
-         * @const
-         * @enum {string}
          */
         HttpVerbs: {
             PUT: "PUT",
@@ -51189,7 +53615,8 @@ var Constants = {
             PATCH: "PATCH"
         },
         StatusCodes: {
-            TooManyRequests: 429
+            TooManyRequests: 429,
+            ServiceUnavailable: 503
         }
     },
     /**
@@ -51198,9 +53625,6 @@ var Constants = {
     HeaderConstants: {
         /**
          * The Authorization header.
-         *
-         * @const
-         * @type {string}
          */
         AUTHORIZATION: "authorization",
         AUTHORIZATION_SCHEME: "Bearer",
@@ -51208,35 +53632,40 @@ var Constants = {
          * The Retry-After response-header field can be used with a 503 (Service
          * Unavailable) or 349 (Too Many Requests) responses to indicate how long
          * the service is expected to be unavailable to the requesting client.
-         *
-         * @const
-         * @type {string}
          */
         RETRY_AFTER: "Retry-After",
         /**
          * The UserAgent header.
-         *
-         * @const
-         * @type {string}
          */
         USER_AGENT: "User-Agent"
     }
 };
 
 // Copyright (c) Microsoft Corporation.
-var validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
+// Licensed under the MIT license.
+/**
+ * Default key used to access the XML attributes.
+ */
+const XML_ATTRKEY = "$";
+/**
+ * Default key used to access the XML value content.
+ */
+const XML_CHARKEY = "_";
+
+// Copyright (c) Microsoft Corporation.
+const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
 /**
  * A constant that indicates whether the environment is node.js or browser based.
  */
-var isNode = typeof process !== "undefined" &&
+const isNode = typeof process !== "undefined" &&
     !!process.version &&
     !!process.versions &&
     !!process.versions.node;
 /**
  * Encodes an URI.
  *
- * @param {string} uri The URI to be encoded.
- * @return {string} The encoded URI.
+ * @param uri - The URI to be encoded.
+ * @returns The encoded URI.
  */
 function encodeUri(uri) {
     return encodeURIComponent(uri)
@@ -51250,12 +53679,11 @@ function encodeUri(uri) {
  * Returns a stripped version of the Http Response which only contains body,
  * headers and the status.
  *
- * @param {HttpOperationResponse} response The Http Response
- *
- * @return {object} The stripped version of Http Response.
+ * @param response - The Http Response
+ * @returns The stripped version of Http Response.
  */
 function stripResponse(response) {
-    var strippedResponse = {};
+    const strippedResponse = {};
     strippedResponse.body = response.bodyAsText;
     strippedResponse.headers = response.headers;
     strippedResponse.status = response.status;
@@ -51265,12 +53693,11 @@ function stripResponse(response) {
  * Returns a stripped version of the Http Request that does not contain the
  * Authorization header.
  *
- * @param {WebResourceLike} request The Http Request object
- *
- * @return {WebResourceLike} The stripped version of Http Request.
+ * @param request - The Http Request object
+ * @returns The stripped version of Http Request.
  */
 function stripRequest(request) {
-    var strippedRequest = request.clone();
+    const strippedRequest = request.clone();
     if (strippedRequest.headers) {
         strippedRequest.headers.remove("authorization");
     }
@@ -51279,9 +53706,8 @@ function stripRequest(request) {
 /**
  * Validates the given uuid as a string
  *
- * @param {string} uuid The uuid as a string that needs to be validated
- *
- * @return {boolean} True if the uuid is valid; false otherwise.
+ * @param uuid - The uuid as a string that needs to be validated
+ * @returns True if the uuid is valid; false otherwise.
  */
 function isValidUuid(uuid) {
     return validUuidRegex.test(uuid);
@@ -51289,7 +53715,7 @@ function isValidUuid(uuid) {
 /**
  * Generated UUID
  *
- * @return {string} RFC4122 v4 UUID.
+ * @returns RFC4122 v4 UUID.
  */
 function generateUuid() {
     return uuid.v4();
@@ -51298,46 +53724,37 @@ function generateUuid() {
  * Executes an array of promises sequentially. Inspiration of this method is here:
  * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!
  *
- * @param {Array} promiseFactories An array of promise factories(A function that return a promise)
- *
- * @param {any} [kickstart] Input to the first promise that is used to kickstart the promise chain.
+ * @param promiseFactories - An array of promise factories(A function that return a promise)
+ * @param kickstart - Input to the first promise that is used to kickstart the promise chain.
  * If not provided then the promise chain starts with undefined.
- *
- * @return A chain of resolved or rejected promises
+ * @returns A chain of resolved or rejected promises
  */
 function executePromisesSequentially(promiseFactories, kickstart) {
-    var result = Promise.resolve(kickstart);
-    promiseFactories.forEach(function (promiseFactory) {
+    let result = Promise.resolve(kickstart);
+    promiseFactories.forEach((promiseFactory) => {
         result = result.then(promiseFactory);
     });
     return result;
 }
-/**
- * A wrapper for setTimeout that resolves a promise after t milliseconds.
- * @param {number} t The number of milliseconds to be delayed.
- * @param {T} value The value to be resolved with after a timeout of t milliseconds.
- * @returns {Promise<T>} Resolved promise
- */
-function delay(t, value) {
-    return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });
-}
 /**
  * Converts a Promise to a callback.
- * @param {Promise<any>} promise The Promise to be converted to a callback
- * @returns {Function} A function that takes the callback (cb: Function): void
+ * @param promise - The Promise to be converted to a callback
+ * @returns A function that takes the callback `(cb: Function) => void`
  * @deprecated generated code should instead depend on responseToBody
  */
+// eslint-disable-next-line @typescript-eslint/ban-types
 function promiseToCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    // eslint-disable-next-line @typescript-eslint/ban-types
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             return cb(undefined, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             cb(err);
         });
@@ -51345,60 +53762,62 @@ function promiseToCallback(promise) {
 }
 /**
  * Converts a Promise to a service callback.
- * @param {Promise<HttpOperationResponse>} promise - The Promise of HttpOperationResponse to be converted to a service callback
- * @returns {Function} A function that takes the service callback (cb: ServiceCallback<T>): void
+ * @param promise - The Promise of HttpOperationResponse to be converted to a service callback
+ * @returns A function that takes the service callback (cb: ServiceCallback<T>): void
  */
 function promiseToServiceCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             return process.nextTick(cb, undefined, data.parsedBody, data.request, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             process.nextTick(cb, err);
         });
     };
 }
 function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
-    var _a, _b, _c;
     if (!Array.isArray(obj)) {
         obj = [obj];
     }
     if (!xmlNamespaceKey || !xmlNamespace) {
-        return _a = {}, _a[elementName] = obj, _a;
+        return { [elementName]: obj };
     }
-    return _b = {}, _b[elementName] = obj, _b.$ = (_c = {}, _c[xmlNamespaceKey] = xmlNamespace, _c), _b;
+    const result = { [elementName]: obj };
+    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
+    return result;
 }
 /**
  * Applies the properties on the prototype of sourceCtors to the prototype of targetCtor
- * @param {object} targetCtor The target object on which the properties need to be applied.
- * @param {Array<object>} sourceCtors An array of source objects from which the properties need to be taken.
+ * @param targetCtor - The target object on which the properties need to be applied.
+ * @param sourceCtors - An array of source objects from which the properties need to be taken.
  */
-function applyMixins(targetCtor, sourceCtors) {
-    sourceCtors.forEach(function (sourceCtors) {
-        Object.getOwnPropertyNames(sourceCtors.prototype).forEach(function (name) {
-            targetCtor.prototype[name] = sourceCtors.prototype[name];
+function applyMixins(targetCtorParam, sourceCtors) {
+    const castTargetCtorParam = targetCtorParam;
+    sourceCtors.forEach((sourceCtor) => {
+        Object.getOwnPropertyNames(sourceCtor.prototype).forEach((name) => {
+            castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];
         });
     });
 }
-var validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
 /**
  * Indicates whether the given string is in ISO 8601 format.
- * @param {string} value The value to be validated for ISO 8601 duration format.
- * @return {boolean} `true` if valid, `false` otherwise.
+ * @param value - The value to be validated for ISO 8601 duration format.
+ * @returns `true` if valid, `false` otherwise.
  */
 function isDuration(value) {
     return validateISODuration.test(value);
 }
 /**
  * Replace all of the instances of searchValue in value with the provided replaceValue.
- * @param {string | undefined} value The value to search and replace in.
- * @param {string} searchValue The value to search for in the value argument.
- * @param {string} replaceValue The value to replace searchValue with in the value argument.
- * @returns {string | undefined} The value where each instance of searchValue was replaced with replacedValue.
+ * @param value - The value to search and replace in.
+ * @param searchValue - The value to search for in the value argument.
+ * @param replaceValue - The value to replace searchValue with in the value argument.
+ * @returns The value where each instance of searchValue was replaced with replacedValue.
  */
 function replaceAll(value, searchValue, replaceValue) {
     return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || "");
@@ -51406,8 +53825,8 @@ function replaceAll(value, searchValue, replaceValue) {
 /**
  * Determines whether the given entity is a basic/primitive type
  * (string, number, boolean, null, undefined).
- * @param {any} value Any entity
- * @return {boolean} - true is it is primitive type, false otherwise.
+ * @param value - Any entity
+ * @returns true is it is primitive type, false otherwise.
  */
 function isPrimitiveType(value) {
     return (typeof value !== "object" && typeof value !== "function") || value === null;
@@ -51421,73 +53840,89 @@ function getEnvironmentValue(name) {
     }
     return undefined;
 }
+/**
+ * @internal
+ * @returns true when input is an object type that is not null, Array, RegExp, or Date.
+ */
+function isObject(input) {
+    return (typeof input === "object" &&
+        input !== null &&
+        !Array.isArray(input) &&
+        !(input instanceof RegExp) &&
+        !(input instanceof Date));
+}
 
 // Copyright (c) Microsoft Corporation.
-var Serializer = /** @class */ (function () {
-    function Serializer(modelMappers, isXML) {
-        if (modelMappers === void 0) { modelMappers = {}; }
+class Serializer {
+    constructor(modelMappers = {}, isXML) {
         this.modelMappers = modelMappers;
         this.isXML = isXML;
     }
-    Serializer.prototype.validateConstraints = function (mapper, value, objectName) {
-        var failValidation = function (constraintName, constraintValue) {
-            throw new Error("\"" + objectName + "\" with value \"" + value + "\" should satisfy the constraint \"" + constraintName + "\": " + constraintValue + ".");
+    validateConstraints(mapper, value, objectName) {
+        const failValidation = (constraintName, constraintValue) => {
+            throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`);
         };
         if (mapper.constraints && value != undefined) {
-            var _a = mapper.constraints, ExclusiveMaximum = _a.ExclusiveMaximum, ExclusiveMinimum = _a.ExclusiveMinimum, InclusiveMaximum = _a.InclusiveMaximum, InclusiveMinimum = _a.InclusiveMinimum, MaxItems = _a.MaxItems, MaxLength = _a.MaxLength, MinItems = _a.MinItems, MinLength = _a.MinLength, MultipleOf = _a.MultipleOf, Pattern = _a.Pattern, UniqueItems = _a.UniqueItems;
-            if (ExclusiveMaximum != undefined && value >= ExclusiveMaximum) {
+            const valueAsNumber = value;
+            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems } = mapper.constraints;
+            if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {
                 failValidation("ExclusiveMaximum", ExclusiveMaximum);
             }
-            if (ExclusiveMinimum != undefined && value <= ExclusiveMinimum) {
+            if (ExclusiveMinimum != undefined && valueAsNumber <= ExclusiveMinimum) {
                 failValidation("ExclusiveMinimum", ExclusiveMinimum);
             }
-            if (InclusiveMaximum != undefined && value > InclusiveMaximum) {
+            if (InclusiveMaximum != undefined && valueAsNumber > InclusiveMaximum) {
                 failValidation("InclusiveMaximum", InclusiveMaximum);
             }
-            if (InclusiveMinimum != undefined && value < InclusiveMinimum) {
+            if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {
                 failValidation("InclusiveMinimum", InclusiveMinimum);
             }
-            if (MaxItems != undefined && value.length > MaxItems) {
+            const valueAsArray = value;
+            if (MaxItems != undefined && valueAsArray.length > MaxItems) {
                 failValidation("MaxItems", MaxItems);
             }
-            if (MaxLength != undefined && value.length > MaxLength) {
+            if (MaxLength != undefined && valueAsArray.length > MaxLength) {
                 failValidation("MaxLength", MaxLength);
             }
-            if (MinItems != undefined && value.length < MinItems) {
+            if (MinItems != undefined && valueAsArray.length < MinItems) {
                 failValidation("MinItems", MinItems);
             }
-            if (MinLength != undefined && value.length < MinLength) {
+            if (MinLength != undefined && valueAsArray.length < MinLength) {
                 failValidation("MinLength", MinLength);
             }
-            if (MultipleOf != undefined && value % MultipleOf !== 0) {
+            if (MultipleOf != undefined && valueAsNumber % MultipleOf !== 0) {
                 failValidation("MultipleOf", MultipleOf);
             }
             if (Pattern) {
-                var pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
+                const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
                 if (typeof value !== "string" || value.match(pattern) === null) {
                     failValidation("Pattern", Pattern);
                 }
             }
             if (UniqueItems &&
-                value.some(function (item, i, ar) { return ar.indexOf(item) !== i; })) {
+                valueAsArray.some((item, i, ar) => ar.indexOf(item) !== i)) {
                 failValidation("UniqueItems", UniqueItems);
             }
         }
-    };
+    }
     /**
      * Serialize the given object based on its metadata defined in the mapper
      *
-     * @param {Mapper} mapper The mapper which defines the metadata of the serializable object
-     *
-     * @param {object|string|Array|number|boolean|Date|stream} object A valid Javascript object to be serialized
-     *
-     * @param {string} objectName Name of the serialized object
-     *
-     * @returns {object|string|Array|number|boolean|Date|stream} A valid serialized Javascript object
+     * @param mapper - The mapper which defines the metadata of the serializable object
+     * @param object - A valid Javascript object to be serialized
+     * @param objectName - Name of the serialized object
+     * @param options - additional options to deserialization
+     * @returns A valid serialized Javascript object
      */
-    Serializer.prototype.serialize = function (mapper, object, objectName) {
-        var payload = {};
-        var mapperType = mapper.type.name;
+    serialize(mapper, object, objectName, options = {}) {
+        var _a, _b, _c;
+        const updatedOptions = {
+            rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+            includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+            xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+        };
+        let payload = {};
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -51506,15 +53941,15 @@ var Serializer = /** @class */ (function () {
         //      true || null      | undefined/null
         //     false || X         | undefined
         // undefined || X         | undefined/null
-        var required = mapper.required, nullable = mapper.nullable;
+        const { required, nullable } = mapper;
         if (required && nullable && object === undefined) {
-            throw new Error(objectName + " cannot be undefined.");
+            throw new Error(`${objectName} cannot be undefined.`);
         }
         if (required && !nullable && object == undefined) {
-            throw new Error(objectName + " cannot be null or undefined.");
+            throw new Error(`${objectName} cannot be null or undefined.`);
         }
         if (!required && nullable === false && object === null) {
-            throw new Error(objectName + " cannot be null.");
+            throw new Error(`${objectName} cannot be null.`);
         }
         if (object == undefined) {
             payload = object;
@@ -51529,7 +53964,7 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBasicTypes(mapperType, objectName, object);
             }
             else if (mapperType.match(/^Enum$/i) !== null) {
-                var enumMapper = mapper;
+                const enumMapper = mapper;
                 payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);
             }
             else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {
@@ -51542,29 +53977,33 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBase64UrlType(objectName, object);
             }
             else if (mapperType.match(/^Sequence$/i) !== null) {
-                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
             else if (mapperType.match(/^Dictionary$/i) !== null) {
-                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
             else if (mapperType.match(/^Composite$/i) !== null) {
-                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
         }
         return payload;
-    };
+    }
     /**
      * Deserialize the given object based on its metadata defined in the mapper
      *
-     * @param {object} mapper The mapper which defines the metadata of the serializable object
-     *
-     * @param {object|string|Array|number|boolean|Date|stream} responseBody A valid Javascript entity to be deserialized
-     *
-     * @param {string} objectName Name of the deserialized object
-     *
-     * @returns {object|string|Array|number|boolean|Date|stream} A valid deserialized Javascript object
+     * @param mapper - The mapper which defines the metadata of the serializable object
+     * @param responseBody - A valid Javascript entity to be deserialized
+     * @param objectName - Name of the deserialized object
+     * @param options - Controls behavior of XML parser and builder.
+     * @returns A valid deserialized Javascript object
      */
-    Serializer.prototype.deserialize = function (mapper, responseBody, objectName) {
+    deserialize(mapper, responseBody, objectName, options = {}) {
+        var _a, _b, _c;
+        const updatedOptions = {
+            rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+            includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+            xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+        };
         if (responseBody == undefined) {
             if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) {
                 // Edge case for empty XML non-wrapped lists. xml2js can't distinguish
@@ -51578,23 +54017,26 @@ var Serializer = /** @class */ (function () {
             }
             return responseBody;
         }
-        var payload;
-        var mapperType = mapper.type.name;
+        let payload;
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
         if (mapperType.match(/^Composite$/i) !== null) {
-            payload = deserializeCompositeType(this, mapper, responseBody, objectName);
+            payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);
         }
         else {
             if (this.isXML) {
+                const xmlCharKey = updatedOptions.xmlCharKey;
+                const castResponseBody = responseBody;
                 /**
                  * If the mapper specifies this as a non-composite type value but the responseBody contains
-                 * both header ("$") and body ("_") properties, then just reduce the responseBody value to
-                 * the body ("_") property.
+                 * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties,
+                 * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property.
                  */
-                if (responseBody["$"] != undefined && responseBody["_"] != undefined) {
-                    responseBody = responseBody["_"];
+                if (castResponseBody[XML_ATTRKEY] != undefined &&
+                    castResponseBody[xmlCharKey] != undefined) {
+                    responseBody = castResponseBody[xmlCharKey];
                 }
             }
             if (mapperType.match(/^Number$/i) !== null) {
@@ -51630,21 +54072,20 @@ var Serializer = /** @class */ (function () {
                 payload = base64UrlToByteArray(responseBody);
             }
             else if (mapperType.match(/^Sequence$/i) !== null) {
-                payload = deserializeSequenceType(this, mapper, responseBody, objectName);
+                payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);
             }
             else if (mapperType.match(/^Dictionary$/i) !== null) {
-                payload = deserializeDictionaryType(this, mapper, responseBody, objectName);
+                payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);
             }
         }
         if (mapper.isConstant) {
             payload = mapper.defaultValue;
         }
         return payload;
-    };
-    return Serializer;
-}());
+    }
+}
 function trimEnd(str, ch) {
-    var len = str.length;
+    let len = str.length;
     while (len - 1 >= 0 && str[len - 1] === ch) {
         --len;
     }
@@ -51655,10 +54096,10 @@ function bufferToBase64Url(buffer) {
         return undefined;
     }
     if (!(buffer instanceof Uint8Array)) {
-        throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");
+        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);
     }
     // Uint8Array to Base64.
-    var str = encodeByteArray(buffer);
+    const str = encodeByteArray(buffer);
     // Base64 to Base64Url.
     return trimEnd(str, "=")
         .replace(/\+/g, "-")
@@ -51677,12 +54118,11 @@ function base64UrlToByteArray(str) {
     return decodeString(str);
 }
 function splitSerializeName(prop) {
-    var classes = [];
-    var partialclass = "";
+    const classes = [];
+    let partialclass = "";
     if (prop) {
-        var subwords = prop.split(".");
-        for (var _i = 0, subwords_1 = subwords; _i < subwords_1.length; _i++) {
-            var item = subwords_1[_i];
+        const subwords = prop.split(".");
+        for (const item of subwords) {
             if (item.charAt(item.length - 1) === "\\") {
                 partialclass += item.substr(0, item.length - 1) + ".";
             }
@@ -51714,32 +54154,32 @@ function serializeBasicTypes(typeName, objectName, value) {
     if (value !== null && value !== undefined) {
         if (typeName.match(/^Number$/i) !== null) {
             if (typeof value !== "number") {
-                throw new Error(objectName + " with value " + value + " must be of type number.");
+                throw new Error(`${objectName} with value ${value} must be of type number.`);
             }
         }
         else if (typeName.match(/^String$/i) !== null) {
             if (typeof value.valueOf() !== "string") {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string.");
+                throw new Error(`${objectName} with value "${value}" must be of type string.`);
             }
         }
         else if (typeName.match(/^Uuid$/i) !== null) {
             if (!(typeof value.valueOf() === "string" && isValidUuid(value))) {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string and a valid uuid.");
+                throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`);
             }
         }
         else if (typeName.match(/^Boolean$/i) !== null) {
             if (typeof value !== "boolean") {
-                throw new Error(objectName + " with value " + value + " must be of type boolean.");
+                throw new Error(`${objectName} with value ${value} must be of type boolean.`);
             }
         }
         else if (typeName.match(/^Stream$/i) !== null) {
-            var objectType = typeof value;
+            const objectType = typeof value;
             if (objectType !== "string" &&
                 objectType !== "function" &&
                 !(value instanceof ArrayBuffer) &&
                 !ArrayBuffer.isView(value) &&
-                !(typeof Blob === "function" && value instanceof Blob)) {
-                throw new Error(objectName + " must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.");
+                !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob)) {
+                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.`);
             }
         }
     }
@@ -51747,34 +54187,34 @@ function serializeBasicTypes(typeName, objectName, value) {
 }
 function serializeEnumType(objectName, allowedValues, value) {
     if (!allowedValues) {
-        throw new Error("Please provide a set of allowedValues to validate " + objectName + " as an Enum Type.");
+        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);
     }
-    var isPresent = allowedValues.some(function (item) {
+    const isPresent = allowedValues.some((item) => {
         if (typeof item.valueOf() === "string") {
             return item.toLowerCase() === value.toLowerCase();
         }
         return item === value;
     });
     if (!isPresent) {
-        throw new Error(value + " is not a valid value for " + objectName + ". The valid values are: " + JSON.stringify(allowedValues) + ".");
+        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);
     }
     return value;
 }
 function serializeByteArrayType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = encodeByteArray(value);
     }
     return returnValue;
 }
 function serializeBase64UrlType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = bufferToBase64Url(value) || "";
     }
@@ -51785,7 +54225,7 @@ function serializeDateTypes(typeName, value, objectName) {
         if (typeName.match(/^Date$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value =
                 value instanceof Date
@@ -51795,55 +54235,57 @@ function serializeDateTypes(typeName, value, objectName) {
         else if (typeName.match(/^DateTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();
         }
         else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);
             }
             value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();
         }
         else if (typeName.match(/^UnixTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123/ISO8601 format " +
-                    "for it to be serialized in UnixTime/Epoch format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +
+                    `for it to be serialized in UnixTime/Epoch format.`);
             }
             value = dateToUnixTime(value);
         }
         else if (typeName.match(/^TimeSpan$/i) !== null) {
             if (!isDuration(value)) {
-                throw new Error(objectName + " must be a string in ISO 8601 format. Instead was \"" + value + "\".");
+                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`);
             }
         }
     }
     return value;
 }
-function serializeSequenceType(serializer, mapper, object, objectName, isXml) {
-    var _a, _b;
+function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
     if (!Array.isArray(object)) {
-        throw new Error(objectName + " must be of type Array.");
+        throw new Error(`${objectName} must be of type Array.`);
     }
-    var elementType = mapper.type.element;
+    const elementType = mapper.type.element;
     if (!elementType || typeof elementType !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempArray = [];
-    for (var i = 0; i < object.length; i++) {
-        var serializedValue = serializer.serialize(elementType, object[i], objectName);
+    const tempArray = [];
+    for (let i = 0; i < object.length; i++) {
+        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);
         if (isXml && elementType.xmlNamespace) {
-            var xmlnsKey = elementType.xmlNamespacePrefix
-                ? "xmlns:" + elementType.xmlNamespacePrefix
+            const xmlnsKey = elementType.xmlNamespacePrefix
+                ? `xmlns:${elementType.xmlNamespacePrefix}`
                 : "xmlns";
             if (elementType.type.name === "Composite") {
-                tempArray[i] = tslib.__assign(tslib.__assign({}, serializedValue), { $: (_a = {}, _a[xmlnsKey] = elementType.xmlNamespace, _a) });
+                tempArray[i] = Object.assign({}, serializedValue);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
             else {
-                tempArray[i] = { _: serializedValue, $: (_b = {}, _b[xmlnsKey] = elementType.xmlNamespace, _b) };
+                tempArray[i] = {};
+                tempArray[i][options.xmlCharKey] = serializedValue;
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
         }
         else {
@@ -51852,93 +54294,91 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml) {
     }
     return tempArray;
 }
-function serializeDictionaryType(serializer, mapper, object, objectName, isXml) {
-    var _a;
+function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {
     if (typeof object !== "object") {
-        throw new Error(objectName + " must be of type object.");
+        throw new Error(`${objectName} must be of type object.`);
     }
-    var valueType = mapper.type.value;
+    const valueType = mapper.type.value;
     if (!valueType || typeof valueType !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempDictionary = {};
-    for (var _i = 0, _b = Object.keys(object); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var serializedValue = serializer.serialize(valueType, object[key], objectName);
+    const tempDictionary = {};
+    for (const key of Object.keys(object)) {
+        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);
         // If the element needs an XML namespace we need to add it within the $ property
-        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml);
+        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);
     }
     // Add the namespace to the root element if needed
     if (isXml && mapper.xmlNamespace) {
-        var xmlnsKey = mapper.xmlNamespacePrefix ? "xmlns:" + mapper.xmlNamespacePrefix : "xmlns";
-        return tslib.__assign(tslib.__assign({}, tempDictionary), { $: (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a) });
+        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns";
+        const result = tempDictionary;
+        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };
+        return result;
     }
     return tempDictionary;
 }
 /**
  * Resolves the additionalProperties property from a referenced mapper
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
- * @param objectName name of the object being serialized
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
+ * @param objectName - Name of the object being serialized
  */
 function resolveAdditionalProperties(serializer, mapper, objectName) {
-    var additionalProperties = mapper.type.additionalProperties;
+    const additionalProperties = mapper.type.additionalProperties;
     if (!additionalProperties && mapper.type.className) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;
     }
     return additionalProperties;
 }
 /**
  * Finds the mapper referenced by className
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
- * @param objectName name of the object being serialized
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
+ * @param objectName - Name of the object being serialized
  */
 function resolveReferencedMapper(serializer, mapper, objectName) {
-    var className = mapper.type.className;
+    const className = mapper.type.className;
     if (!className) {
-        throw new Error("Class name for model \"" + objectName + "\" is not provided in the mapper \"" + JSON.stringify(mapper, undefined, 2) + "\".");
+        throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`);
     }
     return serializer.modelMappers[className];
 }
 /**
  * Resolves a composite mapper's modelProperties.
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
  */
 function resolveModelProperties(serializer, mapper, objectName) {
-    var modelProps = mapper.type.modelProperties;
+    let modelProps = mapper.type.modelProperties;
     if (!modelProps) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         if (!modelMapper) {
-            throw new Error("mapper() cannot be null or undefined for model \"" + mapper.type.className + "\".");
+            throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`);
         }
         modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;
         if (!modelProps) {
-            throw new Error("modelProperties cannot be null or undefined in the " +
-                ("mapper \"" + JSON.stringify(modelMapper) + "\" of type \"" + mapper.type.className + "\" for object \"" + objectName + "\"."));
+            throw new Error(`modelProperties cannot be null or undefined in the ` +
+                `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`);
         }
     }
     return modelProps;
 }
-function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
-    var _a, _b;
+function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, object, "clientName");
     }
     if (object != undefined) {
-        var payload = {};
-        var modelProps = resolveModelProperties(serializer, mapper, objectName);
-        for (var _i = 0, _c = Object.keys(modelProps); _i < _c.length; _i++) {
-            var key = _c[_i];
-            var propertyMapper = modelProps[key];
+        const payload = {};
+        const modelProps = resolveModelProperties(serializer, mapper, objectName);
+        for (const key of Object.keys(modelProps)) {
+            const propertyMapper = modelProps[key];
             if (propertyMapper.readOnly) {
                 continue;
             }
-            var propName = void 0;
-            var parentObject = payload;
+            let propName;
+            let parentObject = payload;
             if (serializer.isXML) {
                 if (propertyMapper.xmlIsWrapped) {
                     propName = propertyMapper.xmlName;
@@ -51948,11 +54388,10 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
                 }
             }
             else {
-                var paths = splitSerializeName(propertyMapper.serializedName);
+                const paths = splitSerializeName(propertyMapper.serializedName);
                 propName = paths.pop();
-                for (var _d = 0, paths_1 = paths; _d < paths_1.length; _d++) {
-                    var pathName = paths_1[_d];
-                    var childObject = parentObject[pathName];
+                for (const pathName of paths) {
+                    const childObject = parentObject[pathName];
                     if (childObject == undefined &&
                         (object[key] != undefined || propertyMapper.defaultValue !== undefined)) {
                         parentObject[pathName] = {};
@@ -51962,33 +54401,33 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
             }
             if (parentObject != undefined) {
                 if (isXml && mapper.xmlNamespace) {
-                    var xmlnsKey = mapper.xmlNamespacePrefix
-                        ? "xmlns:" + mapper.xmlNamespacePrefix
+                    const xmlnsKey = mapper.xmlNamespacePrefix
+                        ? `xmlns:${mapper.xmlNamespacePrefix}`
                         : "xmlns";
-                    parentObject.$ = tslib.__assign(tslib.__assign({}, parentObject.$), (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a));
+                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });
                 }
-                var propertyObjectName = propertyMapper.serializedName !== ""
+                const propertyObjectName = propertyMapper.serializedName !== ""
                     ? objectName + "." + propertyMapper.serializedName
                     : objectName;
-                var toSerialize = object[key];
-                var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+                let toSerialize = object[key];
+                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
                 if (polymorphicDiscriminator &&
                     polymorphicDiscriminator.clientName === key &&
                     toSerialize == undefined) {
                     toSerialize = mapper.serializedName;
                 }
-                var serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName);
+                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
                 if (serializedValue !== undefined && propName != undefined) {
-                    var value = getXmlObjectValue(propertyMapper, serializedValue, isXml);
+                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
                     if (isXml && propertyMapper.xmlIsAttribute) {
-                        // $ is the key attributes are kept under in xml2js.
+                        // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.
                         // This keeps things simple while preventing name collision
                         // with names in user documents.
-                        parentObject.$ = parentObject.$ || {};
-                        parentObject.$[propName] = serializedValue;
+                        parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};
+                        parentObject[XML_ATTRKEY][propName] = serializedValue;
                     }
                     else if (isXml && propertyMapper.xmlIsWrapped) {
-                        parentObject[propName] = (_b = {}, _b[propertyMapper.xmlElementName] = value, _b);
+                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };
                     }
                     else {
                         parentObject[propName] = value;
@@ -51996,76 +54435,80 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
                 }
             }
         }
-        var additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
+        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
         if (additionalPropertiesMapper) {
-            var propNames = Object.keys(modelProps);
-            var _loop_1 = function (clientPropName) {
-                var isAdditionalProperty = propNames.every(function (pn) { return pn !== clientPropName; });
+            const propNames = Object.keys(modelProps);
+            for (const clientPropName in object) {
+                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);
                 if (isAdditionalProperty) {
-                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]');
+                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options);
                 }
-            };
-            for (var clientPropName in object) {
-                _loop_1(clientPropName);
             }
         }
         return payload;
     }
     return object;
 }
-function getXmlObjectValue(propertyMapper, serializedValue, isXml) {
-    var _a;
+function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
     if (!isXml || !propertyMapper.xmlNamespace) {
         return serializedValue;
     }
-    var xmlnsKey = propertyMapper.xmlNamespacePrefix
-        ? "xmlns:" + propertyMapper.xmlNamespacePrefix
+    const xmlnsKey = propertyMapper.xmlNamespacePrefix
+        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`
         : "xmlns";
-    var xmlNamespace = (_a = {}, _a[xmlnsKey] = propertyMapper.xmlNamespace, _a);
+    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };
     if (["Composite"].includes(propertyMapper.type.name)) {
-        return tslib.__assign({ $: xmlNamespace }, serializedValue);
+        if (serializedValue[XML_ATTRKEY]) {
+            return serializedValue;
+        }
+        else {
+            const result = Object.assign({}, serializedValue);
+            result[XML_ATTRKEY] = xmlNamespace;
+            return result;
+        }
     }
-    return { _: serializedValue, $: xmlNamespace };
+    const result = {};
+    result[options.xmlCharKey] = serializedValue;
+    result[XML_ATTRKEY] = xmlNamespace;
+    return result;
 }
-function isSpecialXmlProperty(propertyName) {
-    return ["$", "_"].includes(propertyName);
+function isSpecialXmlProperty(propertyName, options) {
+    return [XML_ATTRKEY, options.xmlCharKey].includes(propertyName);
 }
-function deserializeCompositeType(serializer, mapper, responseBody, objectName) {
+function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {
     var _a;
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
     }
-    var modelProps = resolveModelProperties(serializer, mapper, objectName);
-    var instance = {};
-    var handledPropertyNames = [];
-    for (var _i = 0, _b = Object.keys(modelProps); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var propertyMapper = modelProps[key];
-        var paths = splitSerializeName(modelProps[key].serializedName);
+    const modelProps = resolveModelProperties(serializer, mapper, objectName);
+    let instance = {};
+    const handledPropertyNames = [];
+    for (const key of Object.keys(modelProps)) {
+        const propertyMapper = modelProps[key];
+        const paths = splitSerializeName(modelProps[key].serializedName);
         handledPropertyNames.push(paths[0]);
-        var serializedName = propertyMapper.serializedName, xmlName = propertyMapper.xmlName, xmlElementName = propertyMapper.xmlElementName;
-        var propertyObjectName = objectName;
+        const { serializedName, xmlName, xmlElementName } = propertyMapper;
+        let propertyObjectName = objectName;
         if (serializedName !== "" && serializedName !== undefined) {
             propertyObjectName = objectName + "." + serializedName;
         }
-        var headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
+        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
         if (headerCollectionPrefix) {
-            var dictionary = {};
-            for (var _c = 0, _d = Object.keys(responseBody); _c < _d.length; _c++) {
-                var headerKey = _d[_c];
+            const dictionary = {};
+            for (const headerKey of Object.keys(responseBody)) {
                 if (headerKey.startsWith(headerCollectionPrefix)) {
-                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName);
+                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);
                 }
                 handledPropertyNames.push(headerKey);
             }
             instance[key] = dictionary;
         }
         else if (serializer.isXML) {
-            if (propertyMapper.xmlIsAttribute && responseBody.$) {
-                instance[key] = serializer.deserialize(propertyMapper, responseBody.$[xmlName], propertyObjectName);
+            if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {
+                instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);
             }
             else {
-                var propertyName = xmlElementName || xmlName || serializedName;
+                const propertyName = xmlElementName || xmlName || serializedName;
                 if (propertyMapper.xmlIsWrapped) {
                     /* a list of <xmlElementName> wrapped by <xmlName>
                       For the xml example below
@@ -52081,29 +54524,28 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName)
                         }
                       xmlName is "Cors" and xmlElementName is"CorsRule".
                     */
-                    var wrapped = responseBody[xmlName];
-                    var elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
-                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName);
+                    const wrapped = responseBody[xmlName];
+                    const elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
+                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
                 }
                 else {
-                    var property = responseBody[propertyName];
-                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName);
+                    const property = responseBody[propertyName];
+                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);
                 }
             }
         }
         else {
             // deserialize the property if it is present in the provided responseBody instance
-            var propertyInstance = void 0;
-            var res = responseBody;
+            let propertyInstance;
+            let res = responseBody;
             // traversing the object step by step.
-            for (var _e = 0, paths_2 = paths; _e < paths_2.length; _e++) {
-                var item = paths_2[_e];
+            for (const item of paths) {
                 if (!res)
                     break;
                 res = res[item];
             }
             propertyInstance = res;
-            var polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
+            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
             // checking that the model property name (key)(ex: "fishtype") and the
             // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype")
             // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type")
@@ -52118,94 +54560,100 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName)
                 propertyInstance == undefined) {
                 propertyInstance = mapper.serializedName;
             }
-            var serializedValue = void 0;
+            let serializedValue;
             // paging
             if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") {
                 propertyInstance = responseBody[key];
-                instance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName);
+                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
+                // Copy over any properties that have already been added into the instance, where they do
+                // not exist on the newly de-serialized array
+                for (const [k, v] of Object.entries(instance)) {
+                    if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {
+                        arrayInstance[k] = v;
+                    }
+                }
+                instance = arrayInstance;
             }
             else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {
-                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName);
+                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
                 instance[key] = serializedValue;
             }
         }
     }
-    var additionalPropertiesMapper = mapper.type.additionalProperties;
+    const additionalPropertiesMapper = mapper.type.additionalProperties;
     if (additionalPropertiesMapper) {
-        var isAdditionalProperty = function (responsePropName) {
-            for (var clientPropName in modelProps) {
-                var paths = splitSerializeName(modelProps[clientPropName].serializedName);
+        const isAdditionalProperty = (responsePropName) => {
+            for (const clientPropName in modelProps) {
+                const paths = splitSerializeName(modelProps[clientPropName].serializedName);
                 if (paths[0] === responsePropName) {
                     return false;
                 }
             }
             return true;
         };
-        for (var responsePropName in responseBody) {
+        for (const responsePropName in responseBody) {
             if (isAdditionalProperty(responsePropName)) {
-                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]');
+                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options);
             }
         }
     }
     else if (responseBody) {
-        for (var _f = 0, _g = Object.keys(responseBody); _f < _g.length; _f++) {
-            var key = _g[_f];
+        for (const key of Object.keys(responseBody)) {
             if (instance[key] === undefined &&
                 !handledPropertyNames.includes(key) &&
-                !isSpecialXmlProperty(key)) {
+                !isSpecialXmlProperty(key, options)) {
                 instance[key] = responseBody[key];
             }
         }
     }
     return instance;
 }
-function deserializeDictionaryType(serializer, mapper, responseBody, objectName) {
-    var value = mapper.type.value;
+function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {
+    const value = mapper.type.value;
     if (!value || typeof value !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
-        var tempDictionary = {};
-        for (var _i = 0, _a = Object.keys(responseBody); _i < _a.length; _i++) {
-            var key = _a[_i];
-            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName);
+        const tempDictionary = {};
+        for (const key of Object.keys(responseBody)) {
+            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);
         }
         return tempDictionary;
     }
     return responseBody;
 }
-function deserializeSequenceType(serializer, mapper, responseBody, objectName) {
-    var element = mapper.type.element;
+function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
+    const element = mapper.type.element;
     if (!element || typeof element !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
         if (!Array.isArray(responseBody)) {
             // xml2js will interpret a single element array as just the element, so force it to be an array
             responseBody = [responseBody];
         }
-        var tempArray = [];
-        for (var i = 0; i < responseBody.length; i++) {
-            tempArray[i] = serializer.deserialize(element, responseBody[i], objectName + "[" + i + "]");
+        const tempArray = [];
+        for (let i = 0; i < responseBody.length; i++) {
+            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);
         }
         return tempArray;
     }
     return responseBody;
 }
 function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
-    var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
     if (polymorphicDiscriminator) {
-        var discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
+        const discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
         if (discriminatorName != undefined) {
-            var discriminatorValue = object[discriminatorName];
+            const discriminatorValue = object[discriminatorName];
             if (discriminatorValue != undefined) {
-                var typeName = mapper.type.uberParent || mapper.type.className;
-                var indexDiscriminator = discriminatorValue === typeName
+                const typeName = mapper.type.uberParent || mapper.type.className;
+                const indexDiscriminator = discriminatorValue === typeName
                     ? discriminatorValue
                     : typeName + "." + discriminatorValue;
-                var polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
+                const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
                 if (polymorphicMapper) {
                     mapper = polymorphicMapper;
                 }
@@ -52226,6 +54674,7 @@ function getPolymorphicDiscriminatorSafely(serializer, typeName) {
 }
 // TODO: why is this here?
 function serializeObject(toSerialize) {
+    const castToSerialize = toSerialize;
     if (toSerialize == undefined)
         return undefined;
     if (toSerialize instanceof Uint8Array) {
@@ -52236,16 +54685,16 @@ function serializeObject(toSerialize) {
         return toSerialize.toISOString();
     }
     else if (Array.isArray(toSerialize)) {
-        var array = [];
-        for (var i = 0; i < toSerialize.length; i++) {
+        const array = [];
+        for (let i = 0; i < toSerialize.length; i++) {
             array.push(serializeObject(toSerialize[i]));
         }
         return array;
     }
     else if (typeof toSerialize === "object") {
-        var dictionary = {};
-        for (var property in toSerialize) {
-            dictionary[property] = serializeObject(toSerialize[property]);
+        const dictionary = {};
+        for (const property in toSerialize) {
+            dictionary[property] = serializeObject(castToSerialize[property]);
         }
         return dictionary;
     }
@@ -52255,14 +54704,14 @@ function serializeObject(toSerialize) {
  * Utility function to create a K:V from a list of strings
  */
 function strEnum(o) {
-    var result = {};
-    for (var _i = 0, o_1 = o; _i < o_1.length; _i++) {
-        var key = o_1[_i];
+    const result = {};
+    for (const key of o) {
         result[key] = key;
     }
     return result;
 }
-var MapperType = strEnum([
+// eslint-disable-next-line @typescript-eslint/no-redeclare
+const MapperType = strEnum([
     "Base64Url",
     "Boolean",
     "ByteArray",
@@ -52283,17 +54732,17 @@ var MapperType = strEnum([
 
 // Copyright (c) Microsoft Corporation.
 function isWebResourceLike(object) {
-    if (typeof object !== "object") {
-        return false;
-    }
-    if (typeof object.url === "string" &&
-        typeof object.method === "string" &&
-        typeof object.headers === "object" &&
-        isHttpHeadersLike(object.headers) &&
-        typeof object.validateRequestProperties === "function" &&
-        typeof object.prepare === "function" &&
-        typeof object.clone === "function") {
-        return true;
+    if (object && typeof object === "object") {
+        const castObject = object;
+        if (typeof castObject.url === "string" &&
+            typeof castObject.method === "string" &&
+            typeof castObject.headers === "object" &&
+            isHttpHeadersLike(castObject.headers) &&
+            typeof castObject.validateRequestProperties === "function" &&
+            typeof castObject.prepare === "function" &&
+            typeof castObject.clone === "function") {
+            return true;
+        }
     }
     return false;
 }
@@ -52302,12 +54751,11 @@ function isWebResourceLike(object) {
  *
  * This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary
  * properties to initiate a request.
- *
- * @constructor
  */
-var WebResource = /** @class */ (function () {
-    function WebResource(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse) {
+class WebResource {
+    constructor(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
         this.streamResponseBody = streamResponseBody;
+        this.streamResponseStatusCodes = streamResponseStatusCodes;
         this.url = url || "";
         this.method = method || "GET";
         this.headers = isHttpHeadersLike(headers) ? headers : new HttpHeaders(headers);
@@ -52329,20 +54777,20 @@ var WebResource = /** @class */ (function () {
      * headers["accept-language"] are defined. It will throw an error if one of the above
      * mentioned properties are not defined.
      */
-    WebResource.prototype.validateRequestProperties = function () {
+    validateRequestProperties() {
         if (!this.method) {
             throw new Error("WebResource.method is required.");
         }
         if (!this.url) {
             throw new Error("WebResource.url is required.");
         }
-    };
+    }
     /**
      * Prepares the request.
-     * @param {RequestPrepareOptions} options Options to provide for preparing the request.
-     * @returns {WebResource} Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
+     * @param options - Options to provide for preparing the request.
+     * @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
      */
-    WebResource.prototype.prepare = function (options) {
+    prepare(options) {
         if (!options) {
             throw new Error("options object is required");
         }
@@ -52371,7 +54819,7 @@ var WebResource = /** @class */ (function () {
         }
         // set the method
         if (options.method) {
-            var validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
+            const validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
             if (validMethods.indexOf(options.method.toUpperCase()) === -1) {
                 throw new Error('The provided method "' +
                     options.method +
@@ -52382,70 +54830,70 @@ var WebResource = /** @class */ (function () {
         this.method = options.method.toUpperCase();
         // construct the url if path template is provided
         if (options.pathTemplate) {
-            var pathTemplate_1 = options.pathTemplate, pathParameters_1 = options.pathParameters;
-            if (typeof pathTemplate_1 !== "string") {
+            const { pathTemplate, pathParameters } = options;
+            if (typeof pathTemplate !== "string") {
                 throw new Error('options.pathTemplate must be of type "string".');
             }
             if (!options.baseUrl) {
                 options.baseUrl = "https://management.azure.com";
             }
-            var baseUrl = options.baseUrl;
-            var url_1 = baseUrl +
+            const baseUrl = options.baseUrl;
+            let url = baseUrl +
                 (baseUrl.endsWith("/") ? "" : "/") +
-                (pathTemplate_1.startsWith("/") ? pathTemplate_1.slice(1) : pathTemplate_1);
-            var segments = url_1.match(/({[\w-]*\s*[\w-]*})/gi);
+                (pathTemplate.startsWith("/") ? pathTemplate.slice(1) : pathTemplate);
+            const segments = url.match(/({[\w-]*\s*[\w-]*})/gi);
             if (segments && segments.length) {
-                if (!pathParameters_1) {
-                    throw new Error("pathTemplate: " + pathTemplate_1 + " has been provided. Hence, options.pathParameters must also be provided.");
+                if (!pathParameters) {
+                    throw new Error(`pathTemplate: ${pathTemplate} has been provided. Hence, options.pathParameters must also be provided.`);
                 }
                 segments.forEach(function (item) {
-                    var pathParamName = item.slice(1, -1);
-                    var pathParam = pathParameters_1[pathParamName];
+                    const pathParamName = item.slice(1, -1);
+                    const pathParam = pathParameters[pathParamName];
                     if (pathParam === null ||
                         pathParam === undefined ||
                         !(typeof pathParam === "string" || typeof pathParam === "object")) {
-                        var stringifiedPathParameters = JSON.stringify(pathParameters_1, undefined, 2);
-                        throw new Error("pathTemplate: " + pathTemplate_1 + " contains the path parameter " + pathParamName +
-                            (" however, it is not present in parameters: " + stringifiedPathParameters + ".") +
-                            ("The value of the path parameter can either be a \"string\" of the form { " + pathParamName + ": \"some sample value\" } or ") +
-                            ("it can be an \"object\" of the form { \"" + pathParamName + "\": { value: \"some sample value\", skipUrlEncoding: true } }."));
+                        const stringifiedPathParameters = JSON.stringify(pathParameters, undefined, 2);
+                        throw new Error(`pathTemplate: ${pathTemplate} contains the path parameter ${pathParamName}` +
+                            ` however, it is not present in parameters: ${stringifiedPathParameters}.` +
+                            `The value of the path parameter can either be a "string" of the form { ${pathParamName}: "some sample value" } or ` +
+                            `it can be an "object" of the form { "${pathParamName}": { value: "some sample value", skipUrlEncoding: true } }.`);
                     }
                     if (typeof pathParam.valueOf() === "string") {
-                        url_1 = url_1.replace(item, encodeURIComponent(pathParam));
+                        url = url.replace(item, encodeURIComponent(pathParam));
                     }
                     if (typeof pathParam.valueOf() === "object") {
                         if (!pathParam.value) {
-                            throw new Error("options.pathParameters[" + pathParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.pathParameters[${pathParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (pathParam.skipUrlEncoding) {
-                            url_1 = url_1.replace(item, pathParam.value);
+                            url = url.replace(item, pathParam.value);
                         }
                         else {
-                            url_1 = url_1.replace(item, encodeURIComponent(pathParam.value));
+                            url = url.replace(item, encodeURIComponent(pathParam.value));
                         }
                     }
                 });
             }
-            this.url = url_1;
+            this.url = url;
         }
         // append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.
         if (options.queryParameters) {
-            var queryParameters = options.queryParameters;
+            const queryParameters = options.queryParameters;
             if (typeof queryParameters !== "object") {
-                throw new Error("options.queryParameters must be of type object. It should be a JSON object " +
-                    "of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. " +
-                    "The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.");
+                throw new Error(`options.queryParameters must be of type object. It should be a JSON object ` +
+                    `of "query-parameter-name" as the key and the "query-parameter-value" as the value. ` +
+                    `The "query-parameter-value" may be fo type "string" or an "object" of the form { value: "query-parameter-value", skipUrlEncoding: true }.`);
             }
             // append question mark if it is not present in the url
             if (this.url && this.url.indexOf("?") === -1) {
                 this.url += "?";
             }
             // construct queryString
-            var queryParams = [];
+            const queryParams = [];
             // We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().
             this.query = {};
-            for (var queryParamName in queryParameters) {
-                var queryParam = queryParameters[queryParamName];
+            for (const queryParamName in queryParameters) {
+                const queryParam = queryParameters[queryParamName];
                 if (queryParam) {
                     if (typeof queryParam === "string") {
                         queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam));
@@ -52453,7 +54901,7 @@ var WebResource = /** @class */ (function () {
                     }
                     else if (typeof queryParam === "object") {
                         if (!queryParam.value) {
-                            throw new Error("options.queryParameters[" + queryParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.queryParameters[${queryParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (queryParam.skipUrlEncoding) {
                             queryParams.push(queryParamName + "=" + queryParam.value);
@@ -52471,9 +54919,8 @@ var WebResource = /** @class */ (function () {
         }
         // add headers to the request if they are provided
         if (options.headers) {
-            var headers = options.headers;
-            for (var _i = 0, _a = Object.keys(options.headers); _i < _a.length; _i++) {
-                var headerName = _a[_i];
+            const headers = options.headers;
+            for (const headerName of Object.keys(options.headers)) {
                 this.headers.set(headerName, headers[headerName]);
             }
         }
@@ -52489,7 +54936,7 @@ var WebResource = /** @class */ (function () {
         if (!this.headers.get("Content-Type")) {
             this.headers.set("Content-Type", "application/json; charset=utf-8");
         }
-        // set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicilty
+        // set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicitly
         this.body = options.body;
         if (options.body !== undefined && options.body !== null) {
             // body as a stream special case. set the body as-is and check for some special request headers specific to sending a stream.
@@ -52513,17 +54960,20 @@ var WebResource = /** @class */ (function () {
         if (options.spanOptions) {
             this.spanOptions = options.spanOptions;
         }
+        if (options.tracingContext) {
+            this.tracingContext = options.tracingContext;
+        }
         this.abortSignal = options.abortSignal;
         this.onDownloadProgress = options.onDownloadProgress;
         this.onUploadProgress = options.onUploadProgress;
         return this;
-    };
+    }
     /**
      * Clone this WebResource HTTP request object.
-     * @returns {WebResource} The clone of this WebResource HTTP request object.
+     * @returns The clone of this WebResource HTTP request object.
      */
-    WebResource.prototype.clone = function () {
-        var result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse);
+    clone() {
+        const result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
         if (this.formData) {
             result.formData = this.formData;
         }
@@ -52537,94 +54987,95 @@ var WebResource = /** @class */ (function () {
             result.operationResponseGetter = this.operationResponseGetter;
         }
         return result;
-    };
-    return WebResource;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var custom = util.inspect.custom;
+const custom = util.inspect.custom;
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A class that handles the query portion of a URLBuilder.
  */
-var URLQuery = /** @class */ (function () {
-    function URLQuery() {
+class URLQuery {
+    constructor() {
         this._rawQuery = {};
     }
     /**
      * Get whether or not there any query parameters in this URLQuery.
      */
-    URLQuery.prototype.any = function () {
+    any() {
         return Object.keys(this._rawQuery).length > 0;
-    };
+    }
     /**
      * Get the keys of the query string.
      */
-    URLQuery.prototype.keys = function () {
+    keys() {
         return Object.keys(this._rawQuery);
-    };
+    }
     /**
      * Set a query parameter with the provided name and value. If the parameterValue is undefined or
      * empty, then this will attempt to remove an existing query parameter with the provided
      * parameterName.
      */
-    URLQuery.prototype.set = function (parameterName, parameterValue) {
+    set(parameterName, parameterValue) {
+        const caseParameterValue = parameterValue;
         if (parameterName) {
-            if (parameterValue !== undefined && parameterValue !== null) {
-                var newValue = Array.isArray(parameterValue) ? parameterValue : parameterValue.toString();
+            if (caseParameterValue !== undefined && caseParameterValue !== null) {
+                const newValue = Array.isArray(caseParameterValue)
+                    ? caseParameterValue
+                    : caseParameterValue.toString();
                 this._rawQuery[parameterName] = newValue;
             }
             else {
                 delete this._rawQuery[parameterName];
             }
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided name. If no parameter exists with the
      * provided parameter name, then undefined will be returned.
      */
-    URLQuery.prototype.get = function (parameterName) {
+    get(parameterName) {
         return parameterName ? this._rawQuery[parameterName] : undefined;
-    };
+    }
     /**
      * Get the string representation of this query. The return value will not start with a "?".
      */
-    URLQuery.prototype.toString = function () {
-        var result = "";
-        for (var parameterName in this._rawQuery) {
+    toString() {
+        let result = "";
+        for (const parameterName in this._rawQuery) {
             if (result) {
                 result += "&";
             }
-            var parameterValue = this._rawQuery[parameterName];
+            const parameterValue = this._rawQuery[parameterName];
             if (Array.isArray(parameterValue)) {
-                var parameterStrings = [];
-                for (var _i = 0, parameterValue_1 = parameterValue; _i < parameterValue_1.length; _i++) {
-                    var parameterValueElement = parameterValue_1[_i];
-                    parameterStrings.push(parameterName + "=" + parameterValueElement);
+                const parameterStrings = [];
+                for (const parameterValueElement of parameterValue) {
+                    parameterStrings.push(`${parameterName}=${parameterValueElement}`);
                 }
                 result += parameterStrings.join("&");
             }
             else {
-                result += parameterName + "=" + parameterValue;
+                result += `${parameterName}=${parameterValue}`;
             }
         }
         return result;
-    };
+    }
     /**
      * Parse a URLQuery from the provided text.
      */
-    URLQuery.parse = function (text) {
-        var result = new URLQuery();
+    static parse(text) {
+        const result = new URLQuery();
         if (text) {
             if (text.startsWith("?")) {
                 text = text.substring(1);
             }
-            var currentState = "ParameterName";
-            var parameterName = "";
-            var parameterValue = "";
-            for (var i = 0; i < text.length; ++i) {
-                var currentCharacter = text[i];
+            let currentState = "ParameterName";
+            let parameterName = "";
+            let parameterValue = "";
+            for (let i = 0; i < text.length; ++i) {
+                const currentCharacter = text[i];
                 switch (currentState) {
                     case "ParameterName":
                         switch (currentCharacter) {
@@ -52662,81 +55113,78 @@ var URLQuery = /** @class */ (function () {
             }
         }
         return result;
-    };
-    return URLQuery;
-}());
+    }
+}
 /**
  * A class that handles creating, modifying, and parsing URLs.
  */
-var URLBuilder = /** @class */ (function () {
-    function URLBuilder() {
-    }
+class URLBuilder {
     /**
      * Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL
      * (such as a host, port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setScheme = function (scheme) {
+    setScheme(scheme) {
         if (!scheme) {
             this._scheme = undefined;
         }
         else {
             this.set(scheme, "SCHEME");
         }
-    };
+    }
     /**
      * Get the scheme that has been set in this URL.
      */
-    URLBuilder.prototype.getScheme = function () {
+    getScheme() {
         return this._scheme;
-    };
+    }
     /**
      * Set the host for this URL. If the provided host contains other parts of a URL (such as a
      * port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setHost = function (host) {
+    setHost(host) {
         if (!host) {
             this._host = undefined;
         }
         else {
             this.set(host, "SCHEME_OR_HOST");
         }
-    };
+    }
     /**
      * Get the host that has been set in this URL.
      */
-    URLBuilder.prototype.getHost = function () {
+    getHost() {
         return this._host;
-    };
+    }
     /**
      * Set the port for this URL. If the provided port contains other parts of a URL (such as a
      * path or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setPort = function (port) {
+    setPort(port) {
         if (port === undefined || port === null || port === "") {
             this._port = undefined;
         }
         else {
             this.set(port.toString(), "PORT");
         }
-    };
+    }
     /**
      * Get the port that has been set in this URL.
      */
-    URLBuilder.prototype.getPort = function () {
+    getPort() {
         return this._port;
-    };
+    }
     /**
      * Set the path for this URL. If the provided path contains a query, then it will be added to
      * this URL as well.
      */
-    URLBuilder.prototype.setPath = function (path) {
+    setPath(path) {
         if (!path) {
             this._path = undefined;
         }
         else {
-            var schemeIndex = path.indexOf("://");
+            const schemeIndex = path.indexOf("://");
             if (schemeIndex !== -1) {
-                var schemeStart = path.lastIndexOf("/", schemeIndex);
+                const schemeStart = path.lastIndexOf("/", schemeIndex);
                 // Make sure to only grab the URL part of the path before setting the state back to SCHEME
                 // this will handle cases such as "/a/b/c/https://microsoft.com" => "https://microsoft.com"
                 this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), "SCHEME");
@@ -52745,14 +55193,14 @@ var URLBuilder = /** @class */ (function () {
                 this.set(path, "PATH");
             }
         }
-    };
+    }
     /**
      * Append the provided path to this URL's existing path. If the provided path contains a query,
      * then it will be added to this URL as well.
      */
-    URLBuilder.prototype.appendPath = function (path) {
+    appendPath(path) {
         if (path) {
-            var currentPath = this.getPath();
+            let currentPath = this.getPath();
             if (currentPath) {
                 if (!currentPath.endsWith("/")) {
                     currentPath += "/";
@@ -52764,58 +55212,58 @@ var URLBuilder = /** @class */ (function () {
             }
             this.set(path, "PATH");
         }
-    };
+    }
     /**
      * Get the path that has been set in this URL.
      */
-    URLBuilder.prototype.getPath = function () {
+    getPath() {
         return this._path;
-    };
+    }
     /**
      * Set the query in this URL.
      */
-    URLBuilder.prototype.setQuery = function (query) {
+    setQuery(query) {
         if (!query) {
             this._query = undefined;
         }
         else {
             this._query = URLQuery.parse(query);
         }
-    };
+    }
     /**
      * Set a query parameter with the provided name and value in this URL's query. If the provided
      * query parameter value is undefined or empty, then the query parameter will be removed if it
      * existed.
      */
-    URLBuilder.prototype.setQueryParameter = function (queryParameterName, queryParameterValue) {
+    setQueryParameter(queryParameterName, queryParameterValue) {
         if (queryParameterName) {
             if (!this._query) {
                 this._query = new URLQuery();
             }
             this._query.set(queryParameterName, queryParameterValue);
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided query parameter name. If no query
      * parameter exists with the provided name, then undefined will be returned.
      */
-    URLBuilder.prototype.getQueryParameterValue = function (queryParameterName) {
+    getQueryParameterValue(queryParameterName) {
         return this._query ? this._query.get(queryParameterName) : undefined;
-    };
+    }
     /**
      * Get the query in this URL.
      */
-    URLBuilder.prototype.getQuery = function () {
+    getQuery() {
         return this._query ? this._query.toString() : undefined;
-    };
+    }
     /**
      * Set the parts of this URL by parsing the provided text using the provided startState.
      */
-    URLBuilder.prototype.set = function (text, startState) {
-        var tokenizer = new URLTokenizer(text, startState);
+    set(text, startState) {
+        const tokenizer = new URLTokenizer(text, startState);
         while (tokenizer.next()) {
-            var token = tokenizer.current();
-            var tokenPath = void 0;
+            const token = tokenizer.current();
+            let tokenPath;
             if (token) {
                 switch (token.type) {
                     case "SCHEME":
@@ -52837,21 +55285,21 @@ var URLBuilder = /** @class */ (function () {
                         this._query = URLQuery.parse(token.text);
                         break;
                     default:
-                        throw new Error("Unrecognized URLTokenType: " + token.type);
+                        throw new Error(`Unrecognized URLTokenType: ${token.type}`);
                 }
             }
         }
-    };
-    URLBuilder.prototype.toString = function () {
-        var result = "";
+    }
+    toString() {
+        let result = "";
         if (this._scheme) {
-            result += this._scheme + "://";
+            result += `${this._scheme}://`;
         }
         if (this._host) {
             result += this._host;
         }
         if (this._port) {
-            result += ":" + this._port;
+            result += `:${this._port}`;
         }
         if (this._path) {
             if (!this._path.startsWith("/")) {
@@ -52860,15 +55308,15 @@ var URLBuilder = /** @class */ (function () {
             result += this._path;
         }
         if (this._query && this._query.any()) {
-            result += "?" + this._query.toString();
+            result += `?${this._query.toString()}`;
         }
         return result;
-    };
+    }
     /**
      * If the provided searchValue is found in this URLBuilder, then replace it with the provided
      * replaceValue.
      */
-    URLBuilder.prototype.replaceAll = function (searchValue, replaceValue) {
+    replaceAll(searchValue, replaceValue) {
         if (searchValue) {
             this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));
             this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));
@@ -52876,42 +55324,40 @@ var URLBuilder = /** @class */ (function () {
             this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));
             this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));
         }
-    };
-    URLBuilder.parse = function (text) {
-        var result = new URLBuilder();
+    }
+    static parse(text) {
+        const result = new URLBuilder();
         result.set(text, "SCHEME_OR_HOST");
         return result;
-    };
-    return URLBuilder;
-}());
-var URLToken = /** @class */ (function () {
-    function URLToken(text, type) {
+    }
+}
+class URLToken {
+    constructor(text, type) {
         this.text = text;
         this.type = type;
     }
-    URLToken.scheme = function (text) {
+    static scheme(text) {
         return new URLToken(text, "SCHEME");
-    };
-    URLToken.host = function (text) {
+    }
+    static host(text) {
         return new URLToken(text, "HOST");
-    };
-    URLToken.port = function (text) {
+    }
+    static port(text) {
         return new URLToken(text, "PORT");
-    };
-    URLToken.path = function (text) {
+    }
+    static path(text) {
         return new URLToken(text, "PATH");
-    };
-    URLToken.query = function (text) {
+    }
+    static query(text) {
         return new URLToken(text, "QUERY");
-    };
-    return URLToken;
-}());
+    }
+}
 /**
  * Get whether or not the provided character (single character string) is an alphanumeric (letter or
  * digit) character.
  */
 function isAlphaNumericCharacter(character) {
-    var characterCode = character.charCodeAt(0);
+    const characterCode = character.charCodeAt(0);
     return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||
         (65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||
         (97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);
@@ -52919,8 +55365,8 @@ function isAlphaNumericCharacter(character) {
 /**
  * A class that tokenizes URL strings.
  */
-var URLTokenizer = /** @class */ (function () {
-    function URLTokenizer(_text, state) {
+class URLTokenizer {
+    constructor(_text, state) {
         this._text = _text;
         this._textLength = _text ? _text.length : 0;
         this._currentState = state !== undefined && state !== null ? state : "SCHEME_OR_HOST";
@@ -52930,13 +55376,13 @@ var URLTokenizer = /** @class */ (function () {
      * Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer
      * hasn't started or has finished tokenizing.
      */
-    URLTokenizer.prototype.current = function () {
+    current() {
         return this._currentToken;
-    };
+    }
     /**
      * Advance to the next URLToken and return whether or not a URLToken was found.
      */
-    URLTokenizer.prototype.next = function () {
+    next() {
         if (!hasCurrentCharacter(this)) {
             this._currentToken = undefined;
         }
@@ -52961,18 +55407,17 @@ var URLTokenizer = /** @class */ (function () {
                     nextQuery(this);
                     break;
                 default:
-                    throw new Error("Unrecognized URLTokenizerState: " + this._currentState);
+                    throw new Error(`Unrecognized URLTokenizerState: ${this._currentState}`);
             }
         }
         return !!this._currentToken;
-    };
-    return URLTokenizer;
-}());
+    }
+}
 /**
  * Read the remaining characters from this Tokenizer's character stream.
  */
 function readRemaining(tokenizer) {
-    var result = "";
+    let result = "";
     if (tokenizer._currentIndex < tokenizer._textLength) {
         result = tokenizer._text.substring(tokenizer._currentIndex);
         tokenizer._currentIndex = tokenizer._textLength;
@@ -53008,7 +55453,7 @@ function nextCharacter(tokenizer, step) {
  * Tokenizer's stream of characters.
  */
 function peekCharacters(tokenizer, charactersToPeek) {
-    var endIndex = tokenizer._currentIndex + charactersToPeek;
+    let endIndex = tokenizer._currentIndex + charactersToPeek;
     if (tokenizer._textLength < endIndex) {
         endIndex = tokenizer._textLength;
     }
@@ -53019,9 +55464,9 @@ function peekCharacters(tokenizer, charactersToPeek) {
  * is false when provided the current character.
  */
 function readWhile(tokenizer, condition) {
-    var result = "";
+    let result = "";
     while (hasCurrentCharacter(tokenizer)) {
-        var currentCharacter = getCurrentCharacter(tokenizer);
+        const currentCharacter = getCurrentCharacter(tokenizer);
         if (!condition(currentCharacter)) {
             break;
         }
@@ -53037,21 +55482,17 @@ function readWhile(tokenizer, condition) {
  * character stream is reached.
  */
 function readWhileLetterOrDigit(tokenizer) {
-    return readWhile(tokenizer, function (character) { return isAlphaNumericCharacter(character); });
+    return readWhile(tokenizer, (character) => isAlphaNumericCharacter(character));
 }
 /**
  * Read characters from this Tokenizer until one of the provided terminating characters is read or
  * the end of the character stream is reached.
  */
-function readUntilCharacter(tokenizer) {
-    var terminatingCharacters = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        terminatingCharacters[_i - 1] = arguments[_i];
-    }
-    return readWhile(tokenizer, function (character) { return terminatingCharacters.indexOf(character) === -1; });
+function readUntilCharacter(tokenizer, ...terminatingCharacters) {
+    return readWhile(tokenizer, (character) => terminatingCharacters.indexOf(character) === -1);
 }
 function nextScheme(tokenizer) {
-    var scheme = readWhileLetterOrDigit(tokenizer);
+    const scheme = readWhileLetterOrDigit(tokenizer);
     tokenizer._currentToken = URLToken.scheme(scheme);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53061,7 +55502,7 @@ function nextScheme(tokenizer) {
     }
 }
 function nextSchemeOrHost(tokenizer) {
-    var schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
+    const schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentToken = URLToken.host(schemeOrHost);
         tokenizer._currentState = "DONE";
@@ -53090,7 +55531,7 @@ function nextHost(tokenizer) {
     if (peekCharacters(tokenizer, 3) === "://") {
         nextCharacter(tokenizer, 3);
     }
-    var host = readUntilCharacter(tokenizer, ":", "/", "?");
+    const host = readUntilCharacter(tokenizer, ":", "/", "?");
     tokenizer._currentToken = URLToken.host(host);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53109,7 +55550,7 @@ function nextPort(tokenizer) {
     if (getCurrentCharacter(tokenizer) === ":") {
         nextCharacter(tokenizer);
     }
-    var port = readUntilCharacter(tokenizer, "/", "?");
+    const port = readUntilCharacter(tokenizer, "/", "?");
     tokenizer._currentToken = URLToken.port(port);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53122,7 +55563,7 @@ function nextPort(tokenizer) {
     }
 }
 function nextPath(tokenizer) {
-    var path = readUntilCharacter(tokenizer, "?");
+    const path = readUntilCharacter(tokenizer, "?");
     tokenizer._currentToken = URLToken.path(path);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53135,20 +55576,21 @@ function nextQuery(tokenizer) {
     if (getCurrentCharacter(tokenizer) === "?") {
         nextCharacter(tokenizer);
     }
-    var query = readRemaining(tokenizer);
+    const query = readRemaining(tokenizer);
     tokenizer._currentToken = URLToken.query(query);
     tokenizer._currentState = "DONE";
 }
 
 // Copyright (c) Microsoft Corporation.
-var RedactedString = "REDACTED";
-var defaultAllowedHeaderNames = [
+const RedactedString = "REDACTED";
+const defaultAllowedHeaderNames = [
     "x-ms-client-request-id",
     "x-ms-return-client-request-id",
     "x-ms-useragent",
     "x-ms-correlation-request-id",
     "x-ms-request-id",
     "client-request-id",
+    "ms-cv",
     "return-client-request-id",
     "traceparent",
     "Access-Control-Allow-Credentials",
@@ -53161,6 +55603,7 @@ var defaultAllowedHeaderNames = [
     "Access-Control-Request-Method",
     "Origin",
     "Accept",
+    "Accept-Encoding",
     "Cache-Control",
     "Connection",
     "Content-Length",
@@ -53180,64 +55623,68 @@ var defaultAllowedHeaderNames = [
     "Transfer-Encoding",
     "User-Agent"
 ];
-var defaultAllowedQueryParameters = ["api-version"];
-var Sanitizer = /** @class */ (function () {
-    function Sanitizer(_a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.allowedHeaderNames, allowedHeaderNames = _c === void 0 ? [] : _c, _d = _b.allowedQueryParameters, allowedQueryParameters = _d === void 0 ? [] : _d;
+const defaultAllowedQueryParameters = ["api-version"];
+class Sanitizer {
+    constructor({ allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
         allowedHeaderNames = Array.isArray(allowedHeaderNames)
             ? defaultAllowedHeaderNames.concat(allowedHeaderNames)
             : defaultAllowedHeaderNames;
         allowedQueryParameters = Array.isArray(allowedQueryParameters)
             ? defaultAllowedQueryParameters.concat(allowedQueryParameters)
             : defaultAllowedQueryParameters;
-        this.allowedHeaderNames = new Set(allowedHeaderNames.map(function (n) { return n.toLowerCase(); }));
-        this.allowedQueryParameters = new Set(allowedQueryParameters.map(function (p) { return p.toLowerCase(); }));
+        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));
+        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));
     }
-    Sanitizer.prototype.sanitize = function (obj) {
-        return JSON.stringify(obj, this.replacer.bind(this), 2);
-    };
-    Sanitizer.prototype.replacer = function (key, value) {
-        // Ensure Errors include their interesting non-enumerable members
-        if (value instanceof Error) {
-            return tslib.__assign(tslib.__assign({}, value), { name: value.name, message: value.message });
-        }
-        if (key === "_headersMap") {
-            return this.sanitizeHeaders(key, value);
-        }
-        else if (key === "url") {
-            return this.sanitizeUrl(value);
-        }
-        else if (key === "query") {
-            return this.sanitizeQuery(value);
-        }
-        else if (key === "body") {
-            // Don't log the request body
-            return undefined;
-        }
-        else if (key === "response") {
-            // Don't log response again
-            return undefined;
-        }
-        else if (key === "operationSpec") {
-            // When using sendOperationRequest, the request carries a massive
-            // field with the autorest spec. No need to log it.
-            return undefined;
-        }
-        return value;
-    };
-    Sanitizer.prototype.sanitizeHeaders = function (_, value) {
-        return this.sanitizeObject(value, this.allowedHeaderNames, function (v, k) { return v[k].value; });
-    };
-    Sanitizer.prototype.sanitizeQuery = function (value) {
-        return this.sanitizeObject(value, this.allowedQueryParameters, function (v, k) { return v[k]; });
-    };
-    Sanitizer.prototype.sanitizeObject = function (value, allowedKeys, accessor) {
+    sanitize(obj) {
+        const seen = new Set();
+        return JSON.stringify(obj, (key, value) => {
+            // Ensure Errors include their interesting non-enumerable members
+            if (value instanceof Error) {
+                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });
+            }
+            if (key === "_headersMap") {
+                return this.sanitizeHeaders(value);
+            }
+            else if (key === "url") {
+                return this.sanitizeUrl(value);
+            }
+            else if (key === "query") {
+                return this.sanitizeQuery(value);
+            }
+            else if (key === "body") {
+                // Don't log the request body
+                return undefined;
+            }
+            else if (key === "response") {
+                // Don't log response again
+                return undefined;
+            }
+            else if (key === "operationSpec") {
+                // When using sendOperationRequest, the request carries a massive
+                // field with the autorest spec. No need to log it.
+                return undefined;
+            }
+            else if (Array.isArray(value) || isObject(value)) {
+                if (seen.has(value)) {
+                    return "[Circular]";
+                }
+                seen.add(value);
+            }
+            return value;
+        }, 2);
+    }
+    sanitizeHeaders(value) {
+        return this.sanitizeObject(value, this.allowedHeaderNames, (v, k) => v[k].value);
+    }
+    sanitizeQuery(value) {
+        return this.sanitizeObject(value, this.allowedQueryParameters, (v, k) => v[k]);
+    }
+    sanitizeObject(value, allowedKeys, accessor) {
         if (typeof value !== "object" || value === null) {
             return value;
         }
-        var sanitized = {};
-        for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const sanitized = {};
+        for (const k of Object.keys(value)) {
             if (allowedKeys.has(k.toLowerCase())) {
                 sanitized[k] = accessor(value, k);
             }
@@ -53246,236 +55693,233 @@ var Sanitizer = /** @class */ (function () {
             }
         }
         return sanitized;
-    };
-    Sanitizer.prototype.sanitizeUrl = function (value) {
+    }
+    sanitizeUrl(value) {
         if (typeof value !== "string" || value === null) {
             return value;
         }
-        var urlBuilder = URLBuilder.parse(value);
-        var queryString = urlBuilder.getQuery();
+        const urlBuilder = URLBuilder.parse(value);
+        const queryString = urlBuilder.getQuery();
         if (!queryString) {
             return value;
         }
-        var query = URLQuery.parse(queryString);
-        for (var _i = 0, _a = query.keys(); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const query = URLQuery.parse(queryString);
+        for (const k of query.keys()) {
             if (!this.allowedQueryParameters.has(k.toLowerCase())) {
                 query.set(k, RedactedString);
             }
         }
         urlBuilder.setQuery(query.toString());
         return urlBuilder.toString();
-    };
-    return Sanitizer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var errorSanitizer = new Sanitizer();
-var RestError = /** @class */ (function (_super) {
-    tslib.__extends(RestError, _super);
-    function RestError(message, code, statusCode, request, response) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "RestError";
-        _this.code = code;
-        _this.statusCode = statusCode;
-        _this.request = request;
-        _this.response = response;
-        Object.setPrototypeOf(_this, RestError.prototype);
-        return _this;
+const errorSanitizer = new Sanitizer();
+class RestError extends Error {
+    constructor(message, code, statusCode, request, response) {
+        super(message);
+        this.name = "RestError";
+        this.code = code;
+        this.statusCode = statusCode;
+        this.request = request;
+        this.response = response;
+        Object.setPrototypeOf(this, RestError.prototype);
     }
     /**
      * Logging method for util.inspect in Node
      */
-    RestError.prototype[custom] = function () {
-        return "RestError: " + this.message + " \n " + errorSanitizer.sanitize(this);
-    };
-    RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
-    RestError.PARSE_ERROR = "PARSE_ERROR";
-    return RestError;
-}(Error));
+    [custom]() {
+        return `RestError: ${this.message} \n ${errorSanitizer.sanitize(this)}`;
+    }
+}
+RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
+RestError.PARSE_ERROR = "PARSE_ERROR";
 
 // Copyright (c) Microsoft Corporation.
-var ReportTransform = /** @class */ (function (_super) {
-    tslib.__extends(ReportTransform, _super);
-    function ReportTransform(progressCallback) {
-        var _this = _super.call(this) || this;
-        _this.progressCallback = progressCallback;
-        _this.loadedBytes = 0;
-        return _this;
+const logger = logger$1.createClientLogger("core-http");
+
+// Copyright (c) Microsoft Corporation.
+class ReportTransform extends stream.Transform {
+    constructor(progressCallback) {
+        super();
+        this.progressCallback = progressCallback;
+        this.loadedBytes = 0;
     }
-    ReportTransform.prototype._transform = function (chunk, _encoding, callback) {
+    _transform(chunk, _encoding, callback) {
         this.push(chunk);
         this.loadedBytes += chunk.length;
         this.progressCallback({ loadedBytes: this.loadedBytes });
         callback(undefined);
-    };
-    return ReportTransform;
-}(stream.Transform));
-var FetchHttpClient = /** @class */ (function () {
-    function FetchHttpClient() {
     }
-    FetchHttpClient.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var abortController$1, abortListener, formData, requestForm_1, appendFormValue, _i, _a, formKey, formValue, j, contentType, body, onUploadProgress, uploadReportStream, platformSpecificRequestInit, requestInit, response, headers, operationResponse, _b, _c, onDownloadProgress, responseBody, downloadReportStream, length_1, error_1, fetchError;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        if (!httpRequest && typeof httpRequest !== "object") {
-                            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
-                        }
-                        abortController$1 = new abortController.AbortController();
-                        if (httpRequest.abortSignal) {
-                            if (httpRequest.abortSignal.aborted) {
-                                throw new abortController.AbortError("The operation was aborted.");
-                            }
-                            abortListener = function (event) {
-                                if (event.type === "abort") {
-                                    abortController$1.abort();
-                                }
-                            };
-                            httpRequest.abortSignal.addEventListener("abort", abortListener);
-                        }
-                        if (httpRequest.timeout) {
-                            setTimeout(function () {
-                                abortController$1.abort();
-                            }, httpRequest.timeout);
-                        }
-                        if (httpRequest.formData) {
-                            formData = httpRequest.formData;
-                            requestForm_1 = new FormData();
-                            appendFormValue = function (key, value) {
-                                // value function probably returns a stream so we can provide a fresh stream on each retry
-                                if (typeof value === "function") {
-                                    value = value();
-                                }
-                                // eslint-disable-next-line no-prototype-builtins
-                                if (value && value.hasOwnProperty("value") && value.hasOwnProperty("options")) {
-                                    requestForm_1.append(key, value.value, value.options);
-                                }
-                                else {
-                                    requestForm_1.append(key, value);
-                                }
-                            };
-                            for (_i = 0, _a = Object.keys(formData); _i < _a.length; _i++) {
-                                formKey = _a[_i];
-                                formValue = formData[formKey];
-                                if (Array.isArray(formValue)) {
-                                    for (j = 0; j < formValue.length; j++) {
-                                        appendFormValue(formKey, formValue[j]);
-                                    }
-                                }
-                                else {
-                                    appendFormValue(formKey, formValue);
-                                }
-                            }
-                            httpRequest.body = requestForm_1;
-                            httpRequest.formData = undefined;
-                            contentType = httpRequest.headers.get("Content-Type");
-                            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
-                                if (typeof requestForm_1.getBoundary === "function") {
-                                    httpRequest.headers.set("Content-Type", "multipart/form-data; boundary=" + requestForm_1.getBoundary());
-                                }
-                                else {
-                                    // browser will automatically apply a suitable content-type header
-                                    httpRequest.headers.remove("Content-Type");
-                                }
-                            }
-                        }
-                        body = httpRequest.body
-                            ? typeof httpRequest.body === "function"
-                                ? httpRequest.body()
-                                : httpRequest.body
-                            : undefined;
-                        if (httpRequest.onUploadProgress && httpRequest.body) {
-                            onUploadProgress = httpRequest.onUploadProgress;
-                            uploadReportStream = new ReportTransform(onUploadProgress);
-                            if (isReadableStream(body)) {
-                                body.pipe(uploadReportStream);
-                            }
-                            else {
-                                uploadReportStream.end(body);
-                            }
-                            body = uploadReportStream;
-                        }
-                        return [4 /*yield*/, this.prepareRequest(httpRequest)];
-                    case 1:
-                        platformSpecificRequestInit = _d.sent();
-                        requestInit = tslib.__assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal }, platformSpecificRequestInit);
-                        _d.label = 2;
-                    case 2:
-                        _d.trys.push([2, 8, 9, 10]);
-                        return [4 /*yield*/, this.fetch(httpRequest.url, requestInit)];
-                    case 3:
-                        response = _d.sent();
-                        headers = parseHeaders(response.headers);
-                        _b = {
-                            headers: headers,
-                            request: httpRequest,
-                            status: response.status,
-                            readableStreamBody: httpRequest.streamResponseBody
-                                ? response.body
-                                : undefined
-                        };
-                        if (!!httpRequest.streamResponseBody) return [3 /*break*/, 5];
-                        return [4 /*yield*/, response.text()];
-                    case 4:
-                        _c = _d.sent();
-                        return [3 /*break*/, 6];
-                    case 5:
-                        _c = undefined;
-                        _d.label = 6;
-                    case 6:
-                        operationResponse = (_b.bodyAsText = _c,
-                            _b);
-                        onDownloadProgress = httpRequest.onDownloadProgress;
-                        if (onDownloadProgress) {
-                            responseBody = response.body || undefined;
-                            if (isReadableStream(responseBody)) {
-                                downloadReportStream = new ReportTransform(onDownloadProgress);
-                                responseBody.pipe(downloadReportStream);
-                                operationResponse.readableStreamBody = downloadReportStream;
-                            }
-                            else {
-                                length_1 = parseInt(headers.get("Content-Length")) || undefined;
-                                if (length_1) {
-                                    // Calling callback for non-stream response for consistency with browser
-                                    onDownloadProgress({ loadedBytes: length_1 });
-                                }
-                            }
-                        }
-                        return [4 /*yield*/, this.processRequest(operationResponse)];
-                    case 7:
-                        _d.sent();
-                        return [2 /*return*/, operationResponse];
-                    case 8:
-                        error_1 = _d.sent();
-                        fetchError = error_1;
-                        if (fetchError.code === "ENOTFOUND") {
-                            throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
-                        }
-                        else if (fetchError.type === "aborted") {
-                            throw new abortController.AbortError("The operation was aborted.");
-                        }
-                        throw fetchError;
-                    case 9:
-                        // clean up event listener
-                        if (httpRequest.abortSignal && abortListener) {
-                            httpRequest.abortSignal.removeEventListener("abort", abortListener);
-                        }
-                        return [7 /*endfinally*/];
-                    case 10: return [2 /*return*/];
+}
+class FetchHttpClient {
+    async sendRequest(httpRequest) {
+        var _a;
+        if (!httpRequest && typeof httpRequest !== "object") {
+            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
+        }
+        const abortController$1 = new abortController.AbortController();
+        let abortListener;
+        if (httpRequest.abortSignal) {
+            if (httpRequest.abortSignal.aborted) {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            abortListener = (event) => {
+                if (event.type === "abort") {
+                    abortController$1.abort();
                 }
-            });
-        });
-    };
-    return FetchHttpClient;
-}());
+            };
+            httpRequest.abortSignal.addEventListener("abort", abortListener);
+        }
+        if (httpRequest.timeout) {
+            setTimeout(() => {
+                abortController$1.abort();
+            }, httpRequest.timeout);
+        }
+        if (httpRequest.formData) {
+            const formData = httpRequest.formData;
+            const requestForm = new FormData();
+            const appendFormValue = (key, value) => {
+                // value function probably returns a stream so we can provide a fresh stream on each retry
+                if (typeof value === "function") {
+                    value = value();
+                }
+                if (value &&
+                    Object.prototype.hasOwnProperty.call(value, "value") &&
+                    Object.prototype.hasOwnProperty.call(value, "options")) {
+                    requestForm.append(key, value.value, value.options);
+                }
+                else {
+                    requestForm.append(key, value);
+                }
+            };
+            for (const formKey of Object.keys(formData)) {
+                const formValue = formData[formKey];
+                if (Array.isArray(formValue)) {
+                    for (let j = 0; j < formValue.length; j++) {
+                        appendFormValue(formKey, formValue[j]);
+                    }
+                }
+                else {
+                    appendFormValue(formKey, formValue);
+                }
+            }
+            httpRequest.body = requestForm;
+            httpRequest.formData = undefined;
+            const contentType = httpRequest.headers.get("Content-Type");
+            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
+                if (typeof requestForm.getBoundary === "function") {
+                    httpRequest.headers.set("Content-Type", `multipart/form-data; boundary=${requestForm.getBoundary()}`);
+                }
+                else {
+                    // browser will automatically apply a suitable content-type header
+                    httpRequest.headers.remove("Content-Type");
+                }
+            }
+        }
+        let body = httpRequest.body
+            ? typeof httpRequest.body === "function"
+                ? httpRequest.body()
+                : httpRequest.body
+            : undefined;
+        if (httpRequest.onUploadProgress && httpRequest.body) {
+            const onUploadProgress = httpRequest.onUploadProgress;
+            const uploadReportStream = new ReportTransform(onUploadProgress);
+            if (isReadableStream(body)) {
+                body.pipe(uploadReportStream);
+            }
+            else {
+                uploadReportStream.end(body);
+            }
+            body = uploadReportStream;
+        }
+        const platformSpecificRequestInit = await this.prepareRequest(httpRequest);
+        const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
+        let operationResponse;
+        try {
+            const response = await this.fetch(httpRequest.url, requestInit);
+            const headers = parseHeaders(response.headers);
+            const streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
+                httpRequest.streamResponseBody;
+            operationResponse = {
+                headers: headers,
+                request: httpRequest,
+                status: response.status,
+                readableStreamBody: streaming
+                    ? response.body
+                    : undefined,
+                bodyAsText: !streaming ? await response.text() : undefined
+            };
+            const onDownloadProgress = httpRequest.onDownloadProgress;
+            if (onDownloadProgress) {
+                const responseBody = response.body || undefined;
+                if (isReadableStream(responseBody)) {
+                    const downloadReportStream = new ReportTransform(onDownloadProgress);
+                    responseBody.pipe(downloadReportStream);
+                    operationResponse.readableStreamBody = downloadReportStream;
+                }
+                else {
+                    const length = parseInt(headers.get("Content-Length")) || undefined;
+                    if (length) {
+                        // Calling callback for non-stream response for consistency with browser
+                        onDownloadProgress({ loadedBytes: length });
+                    }
+                }
+            }
+            await this.processRequest(operationResponse);
+            return operationResponse;
+        }
+        catch (error) {
+            const fetchError = error;
+            if (fetchError.code === "ENOTFOUND") {
+                throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
+            }
+            else if (fetchError.type === "aborted") {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            throw fetchError;
+        }
+        finally {
+            // clean up event listener
+            if (httpRequest.abortSignal && abortListener) {
+                let uploadStreamDone = Promise.resolve();
+                if (isReadableStream(body)) {
+                    uploadStreamDone = isStreamComplete(body);
+                }
+                let downloadStreamDone = Promise.resolve();
+                if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
+                    downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody, abortController$1);
+                }
+                Promise.all([uploadStreamDone, downloadStreamDone])
+                    .then(() => {
+                    var _a;
+                    (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
+                    return;
+                })
+                    .catch((e) => {
+                    logger.warning("Error when cleaning up abortListener on httpRequest", e);
+                });
+            }
+        }
+    }
+}
 function isReadableStream(body) {
     return body && typeof body.pipe === "function";
 }
+function isStreamComplete(stream, aborter) {
+    return new Promise((resolve) => {
+        stream.once("close", () => {
+            aborter === null || aborter === void 0 ? void 0 : aborter.abort();
+            resolve();
+        });
+        stream.once("end", resolve);
+        stream.once("error", resolve);
+    });
+}
 function parseHeaders(headers) {
-    var httpHeaders = new HttpHeaders();
-    headers.forEach(function (value, key) {
+    const httpHeaders = new HttpHeaders();
+    headers.forEach((value, key) => {
         httpHeaders.set(key, value);
     });
     return httpHeaders;
@@ -53483,14 +55927,14 @@ function parseHeaders(headers) {
 
 // Copyright (c) Microsoft Corporation.
 function createProxyAgent(requestUrl, proxySettings, headers) {
-    var host = URLBuilder.parse(proxySettings.host).getHost();
+    const host = URLBuilder.parse(proxySettings.host).getHost();
     if (!host) {
         throw new Error("Expecting a non-empty host in proxy settings.");
     }
     if (!isValidPort(proxySettings.port)) {
         throw new Error("Expecting a valid port number in the range of [0, 65535] in proxy settings.");
     }
-    var tunnelOptions = {
+    const tunnelOptions = {
         proxy: {
             host: host,
             port: proxySettings.port,
@@ -53498,18 +55942,21 @@ function createProxyAgent(requestUrl, proxySettings, headers) {
         }
     };
     if (proxySettings.username && proxySettings.password) {
-        tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}:${proxySettings.password}`;
     }
-    var isRequestHttps = isUrlHttps(requestUrl);
-    var isProxyHttps = isUrlHttps(proxySettings.host);
-    var proxyAgent = {
+    else if (proxySettings.username) {
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}`;
+    }
+    const isRequestHttps = isUrlHttps(requestUrl);
+    const isProxyHttps = isUrlHttps(proxySettings.host);
+    const proxyAgent = {
         isHttps: isRequestHttps,
         agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions)
     };
     return proxyAgent;
 }
 function isUrlHttps(url) {
-    var urlScheme = URLBuilder.parse(url).getScheme() || "";
+    const urlScheme = URLBuilder.parse(url).getScheme() || "";
     return urlScheme.toLowerCase() === "https";
 }
 function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
@@ -53536,41 +55983,45 @@ function isValidPort(port) {
 function getCachedAgent(isHttps, agentCache) {
     return isHttps ? agentCache.httpsAgent : agentCache.httpAgent;
 }
-var NodeFetchHttpClient = /** @class */ (function (_super) {
-    tslib.__extends(NodeFetchHttpClient, _super);
-    function NodeFetchHttpClient() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.proxyAgents = {};
-        _this.keepAliveAgents = {};
-        _this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
-        return _this;
+class NodeFetchHttpClient extends FetchHttpClient {
+    constructor() {
+        super(...arguments);
+        // a mapping of proxy settings string `${host}:${port}:${username}:${password}` to agent
+        this.proxyAgentMap = new Map();
+        this.keepAliveAgents = {};
+        this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
     }
-    NodeFetchHttpClient.prototype.getOrCreateAgent = function (httpRequest) {
-        var isHttps = isUrlHttps(httpRequest.url);
+    getOrCreateAgent(httpRequest) {
+        var _a;
+        const isHttps = isUrlHttps(httpRequest.url);
         // At the moment, proxy settings and keepAlive are mutually
         // exclusive because the 'tunnel' library currently lacks the
         // ability to create a proxy with keepAlive turned on.
         if (httpRequest.proxySettings) {
-            var agent = getCachedAgent(isHttps, this.proxyAgents);
+            const { host, port, username, password } = httpRequest.proxySettings;
+            const key = `${host}:${port}:${username}:${password}`;
+            const proxyAgents = (_a = this.proxyAgentMap.get(key)) !== null && _a !== void 0 ? _a : {};
+            let agent = getCachedAgent(isHttps, proxyAgents);
             if (agent) {
                 return agent;
             }
-            var tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
+            const tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
             agent = tunnel.agent;
             if (tunnel.isHttps) {
-                this.proxyAgents.httpsAgent = tunnel.agent;
+                proxyAgents.httpsAgent = tunnel.agent;
             }
             else {
-                this.proxyAgents.httpAgent = tunnel.agent;
+                proxyAgents.httpAgent = tunnel.agent;
             }
+            this.proxyAgentMap.set(key, proxyAgents);
             return agent;
         }
         else if (httpRequest.keepAlive) {
-            var agent = getCachedAgent(isHttps, this.keepAliveAgents);
+            let agent = getCachedAgent(isHttps, this.keepAliveAgents);
             if (agent) {
                 return agent;
             }
-            var agentOptions = {
+            const agentOptions = {
                 keepAlive: httpRequest.keepAlive
             };
             if (isHttps) {
@@ -53584,77 +56035,49 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
         else {
             return isHttps ? https.globalAgent : http.globalAgent;
         }
-    };
+    }
     // eslint-disable-next-line @azure/azure-sdk/ts-apisurface-standardized-verbs
-    NodeFetchHttpClient.prototype.fetch = function (input, init) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, node_fetch(input, init)];
+    async fetch(input, init) {
+        return node_fetch(input, init);
+    }
+    async prepareRequest(httpRequest) {
+        const requestInit = {};
+        if (this.cookieJar && !httpRequest.headers.get("Cookie")) {
+            const cookieString = await new Promise((resolve, reject) => {
+                this.cookieJar.getCookieString(httpRequest.url, (err, cookie) => {
+                    if (err) {
+                        reject(err);
+                    }
+                    else {
+                        resolve(cookie);
+                    }
+                });
             });
-        });
-    };
-    NodeFetchHttpClient.prototype.prepareRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var requestInit, cookieString;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        requestInit = {};
-                        if (!(this.cookieJar && !httpRequest.headers.get("Cookie"))) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.getCookieString(httpRequest.url, function (err, cookie) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve(cookie);
-                                    }
-                                });
-                            })];
-                    case 1:
-                        cookieString = _a.sent();
-                        httpRequest.headers.set("Cookie", cookieString);
-                        _a.label = 2;
-                    case 2:
-                        // Set the http(s) agent
-                        requestInit.agent = this.getOrCreateAgent(httpRequest);
-                        requestInit.compress = httpRequest.decompressResponse;
-                        return [2 /*return*/, requestInit];
-                }
-            });
-        });
-    };
-    NodeFetchHttpClient.prototype.processRequest = function (operationResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var setCookieHeader_1;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.cookieJar) return [3 /*break*/, 2];
-                        setCookieHeader_1 = operationResponse.headers.get("Set-Cookie");
-                        if (!(setCookieHeader_1 !== undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.setCookie(setCookieHeader_1, operationResponse.request.url, { ignoreError: true }, function (err) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve();
-                                    }
-                                });
-                            })];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return NodeFetchHttpClient;
-}(FetchHttpClient));
+            httpRequest.headers.set("Cookie", cookieString);
+        }
+        // Set the http(s) agent
+        requestInit.agent = this.getOrCreateAgent(httpRequest);
+        requestInit.compress = httpRequest.decompressResponse;
+        return requestInit;
+    }
+    async processRequest(operationResponse) {
+        if (this.cookieJar) {
+            const setCookieHeader = operationResponse.headers.get("Set-Cookie");
+            if (setCookieHeader !== undefined) {
+                await new Promise((resolve, reject) => {
+                    this.cookieJar.setCookie(setCookieHeader, operationResponse.request.url, { ignoreError: true }, (err) => {
+                        if (err) {
+                            reject(err);
+                        }
+                        else {
+                            resolve();
+                        }
+                    });
+                });
+            }
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (HttpPipelineLogLevel) {
@@ -53679,171 +56102,155 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
 /**
  * Converts an OperationOptions to a RequestOptionsBase
  *
- * @param opts OperationOptions object to convert to RequestOptionsBase
+ * @param opts - OperationOptions object to convert to RequestOptionsBase
  */
 function operationOptionsToRequestOptionsBase(opts) {
-    var requestOptions = opts.requestOptions, tracingOptions = opts.tracingOptions, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
-    var result = additionalOptions;
+    var _a;
+    const { requestOptions, tracingOptions } = opts, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
+    let result = additionalOptions;
     if (requestOptions) {
-        result = tslib.__assign(tslib.__assign({}, result), requestOptions);
+        result = Object.assign(Object.assign({}, result), requestOptions);
     }
     if (tracingOptions) {
-        result.spanOptions = tracingOptions.spanOptions;
+        result.tracingContext = tracingOptions.tracingContext;
+        // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+        result.spanOptions = (_a = tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions;
     }
     return result;
 }
 
 // Copyright (c) Microsoft Corporation.
-var BaseRequestPolicy = /** @class */ (function () {
-    function BaseRequestPolicy(_nextPolicy, _options) {
+class BaseRequestPolicy {
+    constructor(_nextPolicy, _options) {
         this._nextPolicy = _nextPolicy;
         this._options = _options;
     }
     /**
      * Get whether or not a log with the provided log level should be logged.
-     * @param logLevel The log level of the log that will be logged.
+     * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    BaseRequestPolicy.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return this._options.shouldLog(logLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meat the logger's threshold, then nothing will be logged.
-     * @param logLevel The log level of this log.
-     * @param message The message of this log.
+     * @param logLevel - The log level of this log.
+     * @param message - The message of this log.
      */
-    BaseRequestPolicy.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         this._options.log(logLevel, message);
-    };
-    return BaseRequestPolicy;
-}());
+    }
+}
 /**
  * Optional properties that can be used when creating a RequestPolicy.
  */
-var RequestPolicyOptions = /** @class */ (function () {
-    function RequestPolicyOptions(_logger) {
+class RequestPolicyOptions {
+    constructor(_logger) {
         this._logger = _logger;
     }
     /**
      * Get whether or not a log with the provided log level should be logged.
-     * @param logLevel The log level of the log that will be logged.
+     * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    RequestPolicyOptions.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return (!!this._logger &&
             logLevel !== exports.HttpPipelineLogLevel.OFF &&
             logLevel <= this._logger.minimumLogLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meet the logger's threshold, then nothing will be logged.
-     * @param logLevel The log level of this log.
-     * @param message The message of this log.
+     * @param logLevel - The log level of this log.
+     * @param message - The message of this log.
      */
-    RequestPolicyOptions.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         if (this._logger && this.shouldLog(logLevel)) {
             this._logger.log(logLevel, message);
         }
-    };
-    return RequestPolicyOptions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var logger = logger$1.createClientLogger("core-http");
-
-// Copyright (c) Microsoft Corporation.
-function logPolicy(loggingOptions) {
-    if (loggingOptions === void 0) { loggingOptions = {}; }
+function logPolicy(loggingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new LogPolicy(nextPolicy, options, loggingOptions);
         }
     };
 }
-var LogPolicy = /** @class */ (function (_super) {
-    tslib.__extends(LogPolicy, _super);
-    function LogPolicy(nextPolicy, options, _a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.logger, logger$1 = _c === void 0 ? logger.info : _c, _d = _b.allowedHeaderNames, allowedHeaderNames = _d === void 0 ? [] : _d, _e = _b.allowedQueryParameters, allowedQueryParameters = _e === void 0 ? [] : _e;
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.logger = logger$1;
-        _this.sanitizer = new Sanitizer({ allowedHeaderNames: allowedHeaderNames, allowedQueryParameters: allowedQueryParameters });
-        return _this;
+class LogPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, { logger: logger$1 = logger.info, allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
+        super(nextPolicy, options);
+        this.logger = logger$1;
+        this.sanitizer = new Sanitizer({ allowedHeaderNames, allowedQueryParameters });
     }
-    Object.defineProperty(LogPolicy.prototype, "allowedHeaderNames", {
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedHeaderNames;
-        },
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedHeaderNames) {
-            this.sanitizer.allowedHeaderNames = allowedHeaderNames;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(LogPolicy.prototype, "allowedQueryParameters", {
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedQueryParameters;
-        },
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedQueryParameters) {
-            this.sanitizer.allowedQueryParameters = allowedQueryParameters;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    LogPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedHeaderNames() {
+        return this.sanitizer.allowedHeaderNames;
+    }
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedHeaderNames(allowedHeaderNames) {
+        this.sanitizer.allowedHeaderNames = allowedHeaderNames;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedQueryParameters() {
+        return this.sanitizer.allowedQueryParameters;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedQueryParameters(allowedQueryParameters) {
+        this.sanitizer.allowedQueryParameters = allowedQueryParameters;
+    }
+    sendRequest(request) {
         if (!this.logger.enabled)
             return this._nextPolicy.sendRequest(request);
         this.logRequest(request);
-        return this._nextPolicy.sendRequest(request).then(function (response) { return _this.logResponse(response); });
-    };
-    LogPolicy.prototype.logRequest = function (request) {
-        this.logger("Request: " + this.sanitizer.sanitize(request));
-    };
-    LogPolicy.prototype.logResponse = function (response) {
-        this.logger("Response status code: " + response.status);
-        this.logger("Headers: " + this.sanitizer.sanitize(response.headers));
+        return this._nextPolicy.sendRequest(request).then((response) => this.logResponse(response));
+    }
+    logRequest(request) {
+        this.logger(`Request: ${this.sanitizer.sanitize(request)}`);
+    }
+    logResponse(response) {
+        this.logger(`Response status code: ${response.status}`);
+        this.logger(`Headers: ${this.sanitizer.sanitize(response.headers)}`);
         return response;
-    };
-    return LogPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Get the path to this parameter's value as a dotted string (a.b.c).
- * @param parameter The parameter to get the path string for.
+ * @param parameter - The parameter to get the path string for.
  * @returns The path to this parameter's value as a dotted string.
  */
 function getPathStringFromParameter(parameter) {
     return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);
 }
 function getPathStringFromParameterPath(parameterPath, mapper) {
-    var result;
+    let result;
     if (typeof parameterPath === "string") {
         result = parameterPath;
     }
@@ -53857,14 +56264,17 @@ function getPathStringFromParameterPath(parameterPath, mapper) {
 }
 
 // Copyright (c) Microsoft Corporation.
-function isStreamOperation(operationSpec) {
-    var result = false;
-    for (var statusCode in operationSpec.responses) {
-        var operationResponse = operationSpec.responses[statusCode];
+/**
+ * Gets the list of status codes for streaming responses.
+ * @internal
+ */
+function getStreamResponseStatusCodes(operationSpec) {
+    const result = new Set();
+    for (const statusCode in operationSpec.responses) {
+        const operationResponse = operationSpec.responses[statusCode];
         if (operationResponse.bodyMapper &&
             operationResponse.bodyMapper.type.name === MapperType.Stream) {
-            result = true;
-            break;
+            result.add(Number(statusCode));
         }
     }
     return result;
@@ -53875,18 +56285,17 @@ function isStreamOperation(operationSpec) {
 // by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536
 // By creating a new copy of the settings each time we instantiate the parser,
 // we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally.
-var xml2jsDefaultOptionsV2 = {
+const xml2jsDefaultOptionsV2 = {
     explicitCharkey: false,
     trim: false,
     normalize: false,
     normalizeTags: false,
-    attrkey: "$",
-    charkey: "_",
+    attrkey: XML_ATTRKEY,
     explicitArray: true,
     ignoreAttrs: false,
     mergeAttrs: false,
     explicitRoot: true,
-    validator: null,
+    validator: undefined,
     xmlns: false,
     explicitChildren: false,
     preserveChildrenOrder: false,
@@ -53895,17 +56304,17 @@ var xml2jsDefaultOptionsV2 = {
     includeWhiteChars: false,
     async: false,
     strict: true,
-    attrNameProcessors: null,
-    attrValueProcessors: null,
-    tagNameProcessors: null,
-    valueProcessors: null,
+    attrNameProcessors: undefined,
+    attrValueProcessors: undefined,
+    tagNameProcessors: undefined,
+    valueProcessors: undefined,
     rootName: "root",
     xmldec: {
         version: "1.0",
         encoding: "UTF-8",
         standalone: true
     },
-    doctype: null,
+    doctype: undefined,
     renderOpts: {
         pretty: true,
         indent: "  ",
@@ -53917,40 +56326,42 @@ var xml2jsDefaultOptionsV2 = {
     cdata: false
 };
 // The xml2js settings for general XML parsing operations.
-var xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsParserSettings.explicitArray = false;
 // The xml2js settings for general XML building operations.
-var xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsBuilderSettings.explicitArray = false;
 xml2jsBuilderSettings.renderOpts = {
     pretty: false
 };
 /**
  * Converts given JSON object to XML string
- * @param obj JSON object to be converted into XML string
- * @param opts Options that govern the parsing of given JSON object
- * `rootName` indicates the name of the root element in the resulting XML
+ * @param obj - JSON object to be converted into XML string
+ * @param opts - Options that govern the parsing of given JSON object
  */
-function stringifyXML(obj, opts) {
-    xml2jsBuilderSettings.rootName = (opts || {}).rootName;
-    var builder = new xml2js.Builder(xml2jsBuilderSettings);
+function stringifyXML(obj, opts = {}) {
+    var _a;
+    xml2jsBuilderSettings.rootName = opts.rootName;
+    xml2jsBuilderSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
+    const builder = new xml2js.Builder(xml2jsBuilderSettings);
     return builder.buildObject(obj);
 }
 /**
  * Converts given XML string into JSON
- * @param str String containing the XML content to be parsed into JSON
- * @param opts Options that govern the parsing of given xml string
- * `includeRoot` indicates whether the root element is to be included or not in the output
+ * @param str - String containing the XML content to be parsed into JSON
+ * @param opts - Options that govern the parsing of given xml string
  */
-function parseXML(str, opts) {
-    xml2jsParserSettings.explicitRoot = !!(opts && opts.includeRoot);
-    var xmlParser = new xml2js.Parser(xml2jsParserSettings);
-    return new Promise(function (resolve, reject) {
+function parseXML(str, opts = {}) {
+    var _a;
+    xml2jsParserSettings.explicitRoot = !!opts.includeRoot;
+    xml2jsParserSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
+    const xmlParser = new xml2js.Parser(xml2jsParserSettings);
+    return new Promise((resolve, reject) => {
         if (!str) {
             reject(new Error("Document is empty"));
         }
         else {
-            xmlParser.parseString(str, function (err, res) {
+            xmlParser.parseString(str, (err, res) => {
                 if (err) {
                     reject(err);
                 }
@@ -53967,16 +56378,16 @@ function parseXML(str, opts) {
  * Create a new serialization RequestPolicyCreator that will serialized HTTP request bodies as they
  * pass through the HTTP pipeline.
  */
-function deserializationPolicy(deserializationContentTypes) {
+function deserializationPolicy(deserializationContentTypes, parsingOptions) {
     return {
-        create: function (nextPolicy, options) {
-            return new DeserializationPolicy(nextPolicy, deserializationContentTypes, options);
+        create: (nextPolicy, options) => {
+            return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);
         }
     };
 }
-var defaultJsonContentTypes = ["application/json", "text/json"];
-var defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
-var DefaultDeserializationOptions = {
+const defaultJsonContentTypes = ["application/json", "text/json"];
+const defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
+const DefaultDeserializationOptions = {
     expectedContentTypes: {
         json: defaultJsonContentTypes,
         xml: defaultXmlContentTypes
@@ -53986,36 +56397,28 @@ var DefaultDeserializationOptions = {
  * A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the
  * HTTP pipeline.
  */
-var DeserializationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DeserializationPolicy, _super);
-    function DeserializationPolicy(nextPolicy, deserializationContentTypes, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.jsonContentTypes =
+class DeserializationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions = {}) {
+        var _a;
+        super(nextPolicy, requestPolicyOptions);
+        this.jsonContentTypes =
             (deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;
-        _this.xmlContentTypes =
+        this.xmlContentTypes =
             (deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;
-        return _this;
+        this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
     }
-    DeserializationPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy
-                        .sendRequest(request)
-                        .then(function (response) {
-                        return deserializeResponseBody(_this.jsonContentTypes, _this.xmlContentTypes, response);
-                    })];
-            });
-        });
-    };
-    return DeserializationPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        return this._nextPolicy.sendRequest(request).then((response) => deserializeResponseBody(this.jsonContentTypes, this.xmlContentTypes, response, {
+            xmlCharKey: this.xmlCharKey
+        }));
+    }
+}
 function getOperationResponse(parsedResponse) {
-    var result;
-    var request = parsedResponse.request;
-    var operationSpec = request.operationSpec;
+    let result;
+    const request = parsedResponse.request;
+    const operationSpec = request.operationSpec;
     if (operationSpec) {
-        var operationResponseGetter = request.operationResponseGetter;
+        const operationResponseGetter = request.operationResponseGetter;
         if (!operationResponseGetter) {
             result = operationSpec.responses[parsedResponse.status];
         }
@@ -54026,8 +56429,8 @@ function getOperationResponse(parsedResponse) {
     return result;
 }
 function shouldDeserializeResponse(parsedResponse) {
-    var shouldDeserialize = parsedResponse.request.shouldDeserialize;
-    var result;
+    const shouldDeserialize = parsedResponse.request.shouldDeserialize;
+    let result;
     if (shouldDeserialize === undefined) {
         result = true;
     }
@@ -54039,69 +56442,34 @@ function shouldDeserializeResponse(parsedResponse) {
     }
     return result;
 }
-function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
-    return parse(jsonContentTypes, xmlContentTypes, response).then(function (parsedResponse) {
+function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options = {}) {
+    var _a, _b, _c;
+    const updatedOptions = {
+        rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+        includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+        xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+    };
+    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then((parsedResponse) => {
         if (!shouldDeserializeResponse(parsedResponse)) {
             return parsedResponse;
         }
-        var operationSpec = parsedResponse.request.operationSpec;
+        const operationSpec = parsedResponse.request.operationSpec;
         if (!operationSpec || !operationSpec.responses) {
             return parsedResponse;
         }
-        var responseSpec = getOperationResponse(parsedResponse);
-        var expectedStatusCodes = Object.keys(operationSpec.responses);
-        var hasNoExpectedStatusCodes = expectedStatusCodes.length === 0 ||
-            (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default");
-        var isExpectedStatusCode = hasNoExpectedStatusCodes
-            ? 200 <= parsedResponse.status && parsedResponse.status < 300
-            : !!responseSpec;
-        // There is no operation response spec for current status code.
-        // So, treat it as an error case and use the default response spec to deserialize the response.
-        if (!isExpectedStatusCode) {
-            var defaultResponseSpec = operationSpec.responses.default;
-            if (!defaultResponseSpec) {
-                return parsedResponse;
-            }
-            var defaultBodyMapper = defaultResponseSpec.bodyMapper;
-            var defaultHeadersMapper = defaultResponseSpec.headersMapper;
-            var initialErrorMessage = isStreamOperation(operationSpec)
-                ? "Unexpected status code: " + parsedResponse.status
-                : parsedResponse.bodyAsText;
-            var error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
-            try {
-                // If error response has a body, try to extract error code & message from it
-                // Then try to deserialize it using default body mapper
-                if (parsedResponse.parsedBody) {
-                    var parsedBody = parsedResponse.parsedBody;
-                    var internalError = parsedBody.error || parsedBody;
-                    error.code = internalError.code;
-                    if (internalError.message) {
-                        error.message = internalError.message;
-                    }
-                    if (defaultBodyMapper) {
-                        var valueToDeserialize = parsedBody;
-                        if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
-                            valueToDeserialize =
-                                typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
-                        }
-                        error.response.parsedBody = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
-                    }
-                }
-                // If error response has headers, try to deserialize it using default header mapper
-                if (parsedResponse.headers && defaultHeadersMapper) {
-                    error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
-                }
-            }
-            catch (defaultError) {
-                error.message = "Error \"" + defaultError.message + "\" occurred in deserializing the responseBody - \"" + parsedResponse.bodyAsText + "\" for the default response.";
-            }
+        const responseSpec = getOperationResponse(parsedResponse);
+        const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec);
+        if (error) {
             throw error;
         }
+        else if (shouldReturnResponse) {
+            return parsedResponse;
+        }
         // An operation response spec does exist for current status code, so
         // use it to deserialize the response.
         if (responseSpec) {
             if (responseSpec.bodyMapper) {
-                var valueToDeserialize = parsedResponse.parsedBody;
+                let valueToDeserialize = parsedResponse.parsedBody;
                 if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof valueToDeserialize === "object"
@@ -54109,10 +56477,10 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
                             : [];
                 }
                 try {
-                    parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody");
+                    parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options);
                 }
-                catch (error) {
-                    var restError = new RestError("Error " + error + " occurred in deserializing the responseBody - " + parsedResponse.bodyAsText, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+                catch (innerError) {
+                    const restError = new RestError(`Error ${innerError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
                     throw restError;
                 }
             }
@@ -54121,35 +56489,106 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
                 parsedResponse.parsedBody = response.status >= 200 && response.status < 300;
             }
             if (responseSpec.headersMapper) {
-                parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
+                parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders", options);
             }
         }
         return parsedResponse;
     });
 }
-function parse(jsonContentTypes, xmlContentTypes, operationResponse) {
-    var errorHandler = function (err) {
-        var msg = "Error \"" + err + "\" occurred while parsing the response body - " + operationResponse.bodyAsText + ".";
-        var errCode = err.code || RestError.PARSE_ERROR;
-        var e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
+function isOperationSpecEmpty(operationSpec) {
+    const expectedStatusCodes = Object.keys(operationSpec.responses);
+    return (expectedStatusCodes.length === 0 ||
+        (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"));
+}
+function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
+    var _a;
+    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
+    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
+        ? isSuccessByStatus
+        : !!responseSpec;
+    if (isExpectedStatusCode) {
+        if (responseSpec) {
+            if (!responseSpec.isError) {
+                return { error: null, shouldReturnResponse: false };
+            }
+        }
+        else {
+            return { error: null, shouldReturnResponse: false };
+        }
+    }
+    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
+    const streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
+        parsedResponse.request.streamResponseBody;
+    const initialErrorMessage = streaming
+        ? `Unexpected status code: ${parsedResponse.status}`
+        : parsedResponse.bodyAsText;
+    const error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+    // If the item failed but there's no error spec or default spec to deserialize the error,
+    // we should fail so we just throw the parsed response
+    if (!errorResponseSpec) {
+        throw error;
+    }
+    const defaultBodyMapper = errorResponseSpec.bodyMapper;
+    const defaultHeadersMapper = errorResponseSpec.headersMapper;
+    try {
+        // If error response has a body, try to deserialize it using default body mapper.
+        // Then try to extract error code & message from it
+        if (parsedResponse.parsedBody) {
+            const parsedBody = parsedResponse.parsedBody;
+            let parsedError;
+            if (defaultBodyMapper) {
+                let valueToDeserialize = parsedBody;
+                if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
+                    valueToDeserialize =
+                        typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
+                }
+                parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
+            }
+            const internalError = parsedBody.error || parsedError || parsedBody;
+            error.code = internalError.code;
+            if (internalError.message) {
+                error.message = internalError.message;
+            }
+            if (defaultBodyMapper) {
+                error.response.parsedBody = parsedError;
+            }
+        }
+        // If error response has headers, try to deserialize it using default header mapper
+        if (parsedResponse.headers && defaultHeadersMapper) {
+            error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
+        }
+    }
+    catch (defaultError) {
+        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`;
+    }
+    return { error, shouldReturnResponse: false };
+}
+function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
+    var _a;
+    const errorHandler = (err) => {
+        const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;
+        const errCode = err.code || RestError.PARSE_ERROR;
+        const e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
         return Promise.reject(e);
     };
-    if (!operationResponse.request.streamResponseBody && operationResponse.bodyAsText) {
-        var text_1 = operationResponse.bodyAsText;
-        var contentType = operationResponse.headers.get("Content-Type") || "";
-        var contentComponents = !contentType
+    const streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
+        operationResponse.request.streamResponseBody;
+    if (!streaming && operationResponse.bodyAsText) {
+        const text = operationResponse.bodyAsText;
+        const contentType = operationResponse.headers.get("Content-Type") || "";
+        const contentComponents = !contentType
             ? []
-            : contentType.split(";").map(function (component) { return component.toLowerCase(); });
+            : contentType.split(";").map((component) => component.toLowerCase());
         if (contentComponents.length === 0 ||
-            contentComponents.some(function (component) { return jsonContentTypes.indexOf(component) !== -1; })) {
-            return new Promise(function (resolve) {
-                operationResponse.parsedBody = JSON.parse(text_1);
+            contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {
+            return new Promise((resolve) => {
+                operationResponse.parsedBody = JSON.parse(text);
                 resolve(operationResponse);
             }).catch(errorHandler);
         }
-        else if (contentComponents.some(function (component) { return xmlContentTypes.indexOf(component) !== -1; })) {
-            return parseXML(text_1)
-                .then(function (body) {
+        else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {
+            return parseXML(text, opts)
+                .then((body) => {
                 operationResponse.parsedBody = body;
                 return operationResponse;
             })
@@ -54161,11 +56600,11 @@ function parse(jsonContentTypes, xmlContentTypes, operationResponse) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var DEFAULT_CLIENT_RETRY_COUNT = 3;
+const DEFAULT_CLIENT_RETRY_COUNT = 3;
 // intervals are in ms
-var DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
-var DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
-var DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
+const DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
+const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
+const DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
 function isNumber(n) {
     return typeof n === "number";
 }
@@ -54173,10 +56612,10 @@ function isNumber(n) {
  * @internal
  * Determines if the operation should be retried.
  *
- * @param {number} retryLimit Specifies the max number of retries.
- * @param {(response?: HttpOperationResponse, error?: RetryError) => boolean} predicate Initial chekck on whether to retry based on given responses or errors
- * @param {RetryData} retryData  The retry data.
- * @return {boolean} True if the operation qualifies for a retry; false otherwise.
+ * @param retryLimit - Specifies the max number of retries.
+ * @param predicate - Initial chekck on whether to retry based on given responses or errors
+ * @param retryData -  The retry data.
+ * @returns True if the operation qualifies for a retry; false otherwise.
  */
 function shouldRetry(retryLimit, predicate, retryData, response, error) {
     if (!predicate(response, error)) {
@@ -54188,12 +56627,11 @@ function shouldRetry(retryLimit, predicate, retryData, response, error) {
  * @internal
  * Updates the retry data for the next attempt.
  *
- * @param {RetryPolicyOptions} retryOptions specifies retry interval, and its lower bound and upper bound.
- * @param {RetryData} [retryData]  The retry data.
- * @param {RetryError} [err] The operation"s error, if any.
+ * @param retryOptions - specifies retry interval, and its lower bound and upper bound.
+ * @param retryData -  The retry data.
+ * @param err - The operation"s error, if any.
  */
-function updateRetryData(retryOptions, retryData, err) {
-    if (retryData === void 0) { retryData = { retryCount: 0, retryInterval: 0 }; }
+function updateRetryData(retryOptions, retryData = { retryCount: 0, retryInterval: 0 }, err) {
     if (err) {
         if (retryData.error) {
             err.innerError = retryData.error;
@@ -54203,18 +56641,72 @@ function updateRetryData(retryOptions, retryData, err) {
     // Adjust retry count
     retryData.retryCount++;
     // Adjust retry interval
-    var incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
-    var boundedRandDelta = retryOptions.retryInterval * 0.8 +
+    let incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
+    const boundedRandDelta = retryOptions.retryInterval * 0.8 +
         Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));
     incrementDelta *= boundedRandDelta;
     retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);
     return retryData;
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if the value is not null or undefined.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+
+// Copyright (c) Microsoft Corporation.
+const StandardAbortMessage = "The operation was aborted.";
+/**
+ * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.
+ * @param delayInMs - The number of milliseconds to be delayed.
+ * @param value - The value to be resolved with after a timeout of t milliseconds.
+ * @param options - The options for delay - currently abort options
+ *   @param abortSignal - The abortSignal associated with containing operation.
+ *   @param abortErrorMsg - The abort error message associated with containing operation.
+ * @returns - Resolved promise
+ */
+function delay(delayInMs, value, options) {
+    return new Promise((resolve, reject) => {
+        let timer = undefined;
+        let onAborted = undefined;
+        const rejectOnAbort = () => {
+            return reject(new abortController.AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));
+        };
+        const removeListeners = () => {
+            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {
+                options.abortSignal.removeEventListener("abort", onAborted);
+            }
+        };
+        onAborted = () => {
+            if (isDefined(timer)) {
+                clearTimeout(timer);
+            }
+            removeListeners();
+            return rejectOnAbort();
+        };
+        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {
+            return rejectOnAbort();
+        }
+        timer = setTimeout(() => {
+            removeListeners();
+            resolve(value);
+        }, delayInMs);
+        if (options === null || options === void 0 ? void 0 : options.abortSignal) {
+            options.abortSignal.addEventListener("abort", onAborted);
+        }
+    });
+}
+
 // Copyright (c) Microsoft Corporation.
 function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);
         }
     };
@@ -54222,287 +56714,258 @@ function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
 (function (RetryMode) {
     RetryMode[RetryMode["Exponential"] = 0] = "Exponential";
 })(exports.RetryMode || (exports.RetryMode = {}));
-var DefaultRetryOptions = {
+const DefaultRetryOptions = {
     maxRetries: DEFAULT_CLIENT_RETRY_COUNT,
     retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,
     maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL
 };
 /**
- * @class
  * Instantiates a new "ExponentialRetryPolicyFilter" instance.
  */
-var ExponentialRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ExponentialRetryPolicy, _super);
+class ExponentialRetryPolicy extends BaseRequestPolicy {
     /**
-     * @constructor
-     * @param {RequestPolicy} nextPolicy The next RequestPolicy in the pipeline chain.
-     * @param {RequestPolicyOptions} options The options for this RequestPolicy.
-     * @param {number} [retryCount]        The client retry count.
-     * @param {number} [retryInterval]     The client retry interval, in milliseconds.
-     * @param {number} [minRetryInterval]  The minimum retry interval, in milliseconds.
-     * @param {number} [maxRetryInterval]  The maximum retry interval, in milliseconds.
+     * @param nextPolicy - The next RequestPolicy in the pipeline chain.
+     * @param options - The options for this RequestPolicy.
+     * @param retryCount - The client retry count.
+     * @param retryInterval - The client retry interval, in milliseconds.
+     * @param minRetryInterval - The minimum retry interval, in milliseconds.
+     * @param maxRetryInterval - The maximum retry interval, in milliseconds.
      */
-    function ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+    constructor(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    ExponentialRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return retry(_this, request, response); })
-            .catch(function (error) { return retry(_this, request, error.response, undefined, error); });
-    };
-    return ExponentialRetryPolicy;
-}(BaseRequestPolicy));
-function retry(policy, request, response, retryData, requestError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(response) {
-            var statusCode = response === null || response === void 0 ? void 0 : response.status;
-            if (statusCode === undefined ||
-                (statusCode < 500 && statusCode !== 408) ||
-                statusCode === 501 ||
-                statusCode === 505) {
-                return false;
-            }
-            return true;
+            .then((response) => retry(this, request, response))
+            .catch((error) => retry(this, request, error.response, undefined, error));
+    }
+}
+async function retry(policy, request, response, retryData, requestError) {
+    function shouldPolicyRetry(responseParam) {
+        const statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
+        if (statusCode === 503 && (response === null || response === void 0 ? void 0 : response.headers.get(Constants.HeaderConstants.RETRY_AFTER))) {
+            return false;
         }
-        var isAborted, res, err_1, err;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData({
-                        retryInterval: policy.retryInterval,
-                        minRetryInterval: 0,
-                        maxRetryInterval: policy.maxRetryInterval
-                    }, retryData, requestError);
-                    isAborted = request.abortSignal && request.abortSignal.aborted;
-                    if (!(!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response))) return [3 /*break*/, 6];
-                    logger.info("Retrying request in " + retryData.retryInterval);
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 4, , 5]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [4 /*yield*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    res = _a.sent();
-                    return [2 /*return*/, retry(policy, request, res, retryData)];
-                case 4:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry(policy, request, response, retryData, err_1)];
-                case 5: return [3 /*break*/, 7];
-                case 6:
-                    if (isAborted || requestError || !response) {
-                        err = retryData.error ||
-                            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
-                        throw err;
-                    }
-                    else {
-                        return [2 /*return*/, response];
-                    }
-                case 7: return [2 /*return*/];
-            }
-        });
-    });
+        if (statusCode === undefined ||
+            (statusCode < 500 && statusCode !== 408) ||
+            statusCode === 501 ||
+            statusCode === 505) {
+            return false;
+        }
+        return true;
+    }
+    retryData = updateRetryData({
+        retryInterval: policy.retryInterval,
+        minRetryInterval: 0,
+        maxRetryInterval: policy.maxRetryInterval
+    }, retryData, requestError);
+    const isAborted = request.abortSignal && request.abortSignal.aborted;
+    if (!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response)) {
+        logger.info(`Retrying request in ${retryData.retryInterval}`);
+        try {
+            await delay(retryData.retryInterval);
+            const res = await policy._nextPolicy.sendRequest(request.clone());
+            return retry(policy, request, res, retryData);
+        }
+        catch (err) {
+            return retry(policy, request, response, retryData, err);
+        }
+    }
+    else if (isAborted || requestError || !response) {
+        // If the operation failed in the end, return all errors instead of just the last one
+        const err = retryData.error ||
+            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
+        throw err;
+    }
+    else {
+        return response;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
-function generateClientRequestIdPolicy(requestIdHeaderName) {
-    if (requestIdHeaderName === void 0) { requestIdHeaderName = "x-ms-client-request-id"; }
+function generateClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
         }
     };
 }
-var GenerateClientRequestIdPolicy = /** @class */ (function (_super) {
-    tslib.__extends(GenerateClientRequestIdPolicy, _super);
-    function GenerateClientRequestIdPolicy(nextPolicy, options, _requestIdHeaderName) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._requestIdHeaderName = _requestIdHeaderName;
-        return _this;
+class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _requestIdHeaderName) {
+        super(nextPolicy, options);
+        this._requestIdHeaderName = _requestIdHeaderName;
     }
-    GenerateClientRequestIdPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         if (!request.headers.contains(this._requestIdHeaderName)) {
             request.headers.set(this._requestIdHeaderName, request.requestId);
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return GenerateClientRequestIdPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function getDefaultUserAgentKey() {
     return Constants.HeaderConstants.USER_AGENT;
 }
 function getPlatformSpecificData() {
-    var runtimeInfo = {
+    const runtimeInfo = {
         key: "Node",
         value: process.version
     };
-    var osInfo = {
+    const osInfo = {
         key: "OS",
-        value: "(" + os.arch() + "-" + os.type() + "-" + os.release() + ")"
+        value: `(${os.arch()}-${os.type()}-${os.release()})`
     };
     return [runtimeInfo, osInfo];
 }
 
 // Copyright (c) Microsoft Corporation.
 function getRuntimeInfo() {
-    var msRestRuntime = {
+    const msRestRuntime = {
         key: "core-http",
         value: Constants.coreHttpVersion
     };
     return [msRestRuntime];
 }
-function getUserAgentString(telemetryInfo, keySeparator, valueSeparator) {
-    if (keySeparator === void 0) { keySeparator = " "; }
-    if (valueSeparator === void 0) { valueSeparator = "/"; }
+function getUserAgentString(telemetryInfo, keySeparator = " ", valueSeparator = "/") {
     return telemetryInfo
-        .map(function (info) {
-        var value = info.value ? "" + valueSeparator + info.value : "";
-        return "" + info.key + value;
+        .map((info) => {
+        const value = info.value ? `${valueSeparator}${info.value}` : "";
+        return `${info.key}${value}`;
     })
         .join(keySeparator);
 }
-var getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
+const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
 function getDefaultUserAgentValue() {
-    var runtimeInfo = getRuntimeInfo();
-    var platformSpecificData = getPlatformSpecificData();
-    var userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
+    const runtimeInfo = getRuntimeInfo();
+    const platformSpecificData = getPlatformSpecificData();
+    const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
     return userAgent;
 }
 function userAgentPolicy(userAgentData) {
-    var key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
+    const key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
         ? getDefaultUserAgentKey()
         : userAgentData.key;
-    var value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
+    const value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
         ? getDefaultUserAgentValue()
         : userAgentData.value;
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new UserAgentPolicy(nextPolicy, options, key, value);
         }
     };
 }
-var UserAgentPolicy = /** @class */ (function (_super) {
-    tslib.__extends(UserAgentPolicy, _super);
-    function UserAgentPolicy(_nextPolicy, _options, headerKey, headerValue) {
-        var _this = _super.call(this, _nextPolicy, _options) || this;
-        _this._nextPolicy = _nextPolicy;
-        _this._options = _options;
-        _this.headerKey = headerKey;
-        _this.headerValue = headerValue;
-        return _this;
+class UserAgentPolicy extends BaseRequestPolicy {
+    constructor(_nextPolicy, _options, headerKey, headerValue) {
+        super(_nextPolicy, _options);
+        this._nextPolicy = _nextPolicy;
+        this._options = _options;
+        this.headerKey = headerKey;
+        this.headerValue = headerValue;
     }
-    UserAgentPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         this.addUserAgentHeader(request);
         return this._nextPolicy.sendRequest(request);
-    };
-    UserAgentPolicy.prototype.addUserAgentHeader = function (request) {
+    }
+    addUserAgentHeader(request) {
         if (!request.headers) {
             request.headers = new HttpHeaders();
         }
         if (!request.headers.get(this.headerKey) && this.headerValue) {
             request.headers.set(this.headerKey, this.headerValue);
         }
-    };
-    return UserAgentPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultRedirectOptions = {
+/**
+ * Methods that are allowed to follow redirects 301 and 302
+ */
+const allowedRedirect = ["GET", "HEAD"];
+const DefaultRedirectOptions = {
     handleRedirects: true,
     maxRetries: 20
 };
-function redirectPolicy(maximumRetries) {
-    if (maximumRetries === void 0) { maximumRetries = 20; }
+function redirectPolicy(maximumRetries = 20) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RedirectPolicy(nextPolicy, options, maximumRetries);
         }
     };
 }
-var RedirectPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RedirectPolicy, _super);
-    function RedirectPolicy(nextPolicy, options, maxRetries) {
-        if (maxRetries === void 0) { maxRetries = 20; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.maxRetries = maxRetries;
-        return _this;
+class RedirectPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, maxRetries = 20) {
+        super(nextPolicy, options);
+        this.maxRetries = maxRetries;
     }
-    RedirectPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request)
-            .then(function (response) { return handleRedirect(_this, response, 0); });
-    };
-    return RedirectPolicy;
-}(BaseRequestPolicy));
+            .then((response) => handleRedirect(this, response, 0));
+    }
+}
 function handleRedirect(policy, response, currentRetries) {
-    var request = response.request, status = response.status;
-    var locationHeader = response.headers.get("location");
+    const { request, status } = response;
+    const locationHeader = response.headers.get("location");
     if (locationHeader &&
-        (status === 300 || status === 307 || (status === 303 && request.method === "POST")) &&
+        (status === 300 ||
+            (status === 301 && allowedRedirect.includes(request.method)) ||
+            (status === 302 && allowedRedirect.includes(request.method)) ||
+            (status === 303 && request.method === "POST") ||
+            status === 307) &&
         (!policy.maxRetries || currentRetries < policy.maxRetries)) {
-        var builder = URLBuilder.parse(request.url);
+        const builder = URLBuilder.parse(request.url);
         builder.setPath(locationHeader);
         request.url = builder.toString();
         // POST request with Status code 303 should be converted into a
         // redirected GET request if the redirect url is present in the location header
         if (status === 303) {
             request.method = "GET";
+            delete request.body;
         }
         return policy._nextPolicy
             .sendRequest(request)
-            .then(function (res) { return handleRedirect(policy, res, currentRetries + 1); });
+            .then((res) => handleRedirect(policy, res, currentRetries + 1));
     }
     return Promise.resolve(response);
 }
 
 // Copyright (c) Microsoft Corporation.
-function rpRegistrationPolicy(retryTimeout) {
-    if (retryTimeout === void 0) { retryTimeout = 30; }
+function rpRegistrationPolicy(retryTimeout = 30) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);
         }
     };
 }
-var RPRegistrationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RPRegistrationPolicy, _super);
-    function RPRegistrationPolicy(nextPolicy, options, _retryTimeout) {
-        if (_retryTimeout === void 0) { _retryTimeout = 30; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._retryTimeout = _retryTimeout;
-        return _this;
+class RPRegistrationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _retryTimeout = 30) {
+        super(nextPolicy, options);
+        this._retryTimeout = _retryTimeout;
     }
-    RPRegistrationPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return registerIfNeeded(_this, request, response); });
-    };
-    return RPRegistrationPolicy;
-}(BaseRequestPolicy));
+            .then((response) => registerIfNeeded(this, request, response));
+    }
+}
 function registerIfNeeded(policy, request, response) {
     if (response.status === 409) {
-        var rpName = checkRPNotRegisteredError(response.bodyAsText);
+        const rpName = checkRPNotRegisteredError(response.bodyAsText);
         if (rpName) {
-            var urlPrefix = extractSubscriptionUrl(request.url);
+            const urlPrefix = extractSubscriptionUrl(request.url);
             return (registerRP(policy, urlPrefix, rpName, request)
                 // Autoregistration of ${provider} failed for some reason. We will not return this error
                 // instead will return the initial response with 409 status code back to the user.
                 // do nothing here as we are returning the original response at the end of this method.
-                .catch(function () { return false; })
-                .then(function (registrationStatus) {
+                .catch(() => false)
+                .then((registrationStatus) => {
                 if (registrationStatus) {
                     // Retry the original request. We have to change the x-ms-client-request-id
                     // otherwise Azure endpoint will return the initial 409 (cached) response.
@@ -54517,13 +56980,12 @@ function registerIfNeeded(policy, request, response) {
 }
 /**
  * Reuses the headers of the original request and url (if specified).
- * @param {WebResourceLike} originalRequest The original request
- * @param {boolean} reuseUrlToo Should the url from the original request be reused as well. Default false.
- * @returns {object} A new request object with desired headers.
+ * @param originalRequest - The original request
+ * @param reuseUrlToo - Should the url from the original request be reused as well. Default false.
+ * @returns A new request object with desired headers.
  */
-function getRequestEssentials(originalRequest, reuseUrlToo) {
-    if (reuseUrlToo === void 0) { reuseUrlToo = false; }
-    var reqOptions = originalRequest.clone();
+function getRequestEssentials(originalRequest, reuseUrlToo = false) {
+    const reqOptions = originalRequest.clone();
     if (reuseUrlToo) {
         reqOptions.url = originalRequest.url;
     }
@@ -54537,11 +56999,11 @@ function getRequestEssentials(originalRequest, reuseUrlToo) {
 /**
  * Validates the error code and message associated with 409 response status code. If it matches to that of
  * RP not registered then it returns the name of the RP else returns undefined.
- * @param {string} body The response body received after making the original request.
- * @returns {string} The name of the RP if condition is satisfied else undefined.
+ * @param body - The response body received after making the original request.
+ * @returns The name of the RP if condition is satisfied else undefined.
  */
 function checkRPNotRegisteredError(body) {
-    var result, responseBody;
+    let result, responseBody;
     if (body) {
         try {
             responseBody = JSON.parse(body);
@@ -54554,7 +57016,7 @@ function checkRPNotRegisteredError(body) {
             responseBody.error.message &&
             responseBody.error.code &&
             responseBody.error.code === "MissingSubscriptionRegistration") {
-            var matchRes = responseBody.error.message.match(/.*'(.*)'/i);
+            const matchRes = responseBody.error.message.match(/.*'(.*)'/i);
             if (matchRes) {
                 result = matchRes.pop();
             }
@@ -54565,362 +57027,306 @@ function checkRPNotRegisteredError(body) {
 /**
  * Extracts the first part of the URL, just after subscription:
  * https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
- * @param {string} url The original request url
- * @returns {string} The url prefix as explained above.
+ * @param url - The original request url
+ * @returns The url prefix as explained above.
  */
 function extractSubscriptionUrl(url) {
-    var result;
-    var matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
+    let result;
+    const matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
     if (matchRes && matchRes[0]) {
         result = matchRes[0];
     }
     else {
-        throw new Error("Unable to extract subscriptionId from the given url - " + url + ".");
+        throw new Error(`Unable to extract subscriptionId from the given url - ${url}.`);
     }
     return result;
 }
 /**
  * Registers the given provider.
- * @param {RPRegistrationPolicy} policy The RPRegistrationPolicy this function is being called against.
- * @param {string} urlPrefix https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
- * @param {string} provider The provider name to be registered.
- * @param {WebResourceLike} originalRequest The original request sent by the user that returned a 409 response
+ * @param policy - The RPRegistrationPolicy this function is being called against.
+ * @param urlPrefix - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
+ * @param provider - The provider name to be registered.
+ * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @param {registrationCallback} callback The callback that handles the RP registration
  */
-function registerRP(policy, urlPrefix, provider, originalRequest) {
-    var postUrl = urlPrefix + "providers/" + provider + "/register?api-version=2016-02-01";
-    var getUrl = urlPrefix + "providers/" + provider + "?api-version=2016-02-01";
-    var reqOptions = getRequestEssentials(originalRequest);
+async function registerRP(policy, urlPrefix, provider, originalRequest) {
+    const postUrl = `${urlPrefix}providers/${provider}/register?api-version=2016-02-01`;
+    const getUrl = `${urlPrefix}providers/${provider}?api-version=2016-02-01`;
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.method = "POST";
     reqOptions.url = postUrl;
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (response) {
-        if (response.status !== 200) {
-            throw new Error("Autoregistration of " + provider + " failed. Please try registering manually.");
-        }
-        return getRegistrationStatus(policy, getUrl, originalRequest);
-    });
+    const response = await policy._nextPolicy.sendRequest(reqOptions);
+    if (response.status !== 200) {
+        throw new Error(`Autoregistration of ${provider} failed. Please try registering manually.`);
+    }
+    return getRegistrationStatus(policy, getUrl, originalRequest);
 }
 /**
  * Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.
  * Polling will happen till the registrationState property of the response body is "Registered".
- * @param {RPRegistrationPolicy} policy The RPRegistrationPolicy this function is being called against.
- * @param {string} url The request url for polling
- * @param {WebResourceLike} originalRequest The original request sent by the user that returned a 409 response
+ * @param policy - The RPRegistrationPolicy this function is being called against.
+ * @param url - The request url for polling
+ * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @returns {Promise<boolean>} True if RP Registration is successful.
+ * @returns True if RP Registration is successful.
  */
-function getRegistrationStatus(policy, url, originalRequest) {
-    var reqOptions = getRequestEssentials(originalRequest);
+async function getRegistrationStatus(policy, url, originalRequest) {
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.url = url;
     reqOptions.method = "GET";
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (res) {
-        var obj = res.parsedBody;
-        if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
-            return true;
+    const res = await policy._nextPolicy.sendRequest(reqOptions);
+    const obj = res.parsedBody;
+    if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
+        return true;
+    }
+    else {
+        await delay(policy._retryTimeout * 1000);
+        return getRegistrationStatus(policy, url, originalRequest);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Default options for the cycler if none are provided
+const DEFAULT_CYCLER_OPTIONS = {
+    forcedRefreshWindowInMs: 1000,
+    retryIntervalInMs: 3000,
+    refreshWindowInMs: 1000 * 60 * 2 // Start refreshing 2m before expiry
+};
+/**
+ * Converts an an unreliable access token getter (which may resolve with null)
+ * into an AccessTokenGetter by retrying the unreliable getter in a regular
+ * interval.
+ *
+ * @param getAccessToken - a function that produces a promise of an access
+ * token that may fail by returning null
+ * @param retryIntervalInMs - the time (in milliseconds) to wait between retry
+ * attempts
+ * @param timeoutInMs - the timestamp after which the refresh attempt will fail,
+ * throwing an exception
+ * @returns - a promise that, if it resolves, will resolve with an access token
+ */
+async function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
+    // This wrapper handles exceptions gracefully as long as we haven't exceeded
+    // the timeout.
+    async function tryGetAccessToken() {
+        if (Date.now() < timeoutInMs) {
+            try {
+                return await getAccessToken();
+            }
+            catch (_a) {
+                return null;
+            }
         }
         else {
-            return delay(policy._retryTimeout * 1000)
-                .then(function () { return getRegistrationStatus(policy, url, originalRequest); });
+            const finalToken = await getAccessToken();
+            // Timeout is up, so throw if it's still null
+            if (finalToken === null) {
+                throw new Error("Failed to refresh access token.");
+            }
+            return finalToken;
         }
-    });
+    }
+    let token = await tryGetAccessToken();
+    while (token === null) {
+        await delay(retryIntervalInMs);
+        token = await tryGetAccessToken();
+    }
+    return token;
 }
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
 /**
- * Defines the default token refresh buffer duration.
- */
-var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
-/**
- * Provides an {@link AccessTokenCache} implementation which clears
- * the cached {@link AccessToken}'s after the expiresOnTimestamp has
- * passed.
- */
-var ExpiringAccessTokenCache = /** @class */ (function () {
-    /**
-     * Constructs an instance of {@link ExpiringAccessTokenCache} with
-     * an optional expiration buffer time.
-     */
-    function ExpiringAccessTokenCache(tokenRefreshBufferMs) {
-        if (tokenRefreshBufferMs === void 0) { tokenRefreshBufferMs = TokenRefreshBufferMs; }
-        this.cachedToken = undefined;
-        this.tokenRefreshBufferMs = tokenRefreshBufferMs;
-    }
-    ExpiringAccessTokenCache.prototype.setCachedToken = function (accessToken) {
-        this.cachedToken = accessToken;
-    };
-    ExpiringAccessTokenCache.prototype.getCachedToken = function () {
-        if (this.cachedToken &&
-            Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
-            this.cachedToken = undefined;
-        }
-        return this.cachedToken;
-    };
-    return ExpiringAccessTokenCache;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
- */
-var AccessTokenRefresher = /** @class */ (function () {
-    function AccessTokenRefresher(credential, scopes, requiredMillisecondsBeforeNewRefresh) {
-        if (requiredMillisecondsBeforeNewRefresh === void 0) { requiredMillisecondsBeforeNewRefresh = 30000; }
-        this.credential = credential;
-        this.scopes = scopes;
-        this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
-        this.lastCalled = 0;
-    }
-    /**
-     * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
-     * that we are ready for a new refresh.
-     *
-     * @returns {boolean}
-     */
-    AccessTokenRefresher.prototype.isReady = function () {
-        // We're only ready for a new refresh if the required milliseconds have passed.
-        return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
-    };
-    /**
-     * Stores the time in which it is called,
-     * then requests a new token,
-     * then sets this.promise to undefined,
-     * then returns the token.
-     * @param options getToken options
-     */
-    AccessTokenRefresher.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.lastCalled = Date.now();
-                        return [4 /*yield*/, this.credential.getToken(this.scopes, options)];
-                    case 1:
-                        token = _a.sent();
-                        this.promise = undefined;
-                        return [2 /*return*/, token || undefined];
-                }
-            });
-        });
-    };
-    /**
-     * Requests a new token if we're not currently waiting for a new token.
-     * Returns null if the required time between each call hasn't been reached.
-     * @param options getToken options
-     */
-    AccessTokenRefresher.prototype.refresh = function (options) {
-        if (!this.promise) {
-            this.promise = this.getToken(options);
-        }
-        return this.promise;
-    };
-    return AccessTokenRefresher;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * Creates a new BearerTokenAuthenticationPolicy factory.
+ * Creates a token cycler from a credential, scopes, and optional settings.
  *
- * @param credential The TokenCredential implementation that can supply the bearer token.
- * @param scopes The scopes for which the bearer token applies.
+ * A token cycler represents a way to reliably retrieve a valid access token
+ * from a TokenCredential. It will handle initializing the token, refreshing it
+ * when it nears expiration, and synchronizes refresh attempts to avoid
+ * concurrency hazards.
+ *
+ * @param credential - the underlying TokenCredential that provides the access
+ * token
+ * @param scopes - the scopes to request authorization for
+ * @param tokenCyclerOptions - optionally override default settings for the cycler
+ *
+ * @returns - a function that reliably produces a valid access token
+ */
+function createTokenCycler(credential, scopes, tokenCyclerOptions) {
+    let refreshWorker = null;
+    let token = null;
+    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
+    /**
+     * This little holder defines several predicates that we use to construct
+     * the rules of refreshing the token.
+     */
+    const cycler = {
+        /**
+         * Produces true if a refresh job is currently in progress.
+         */
+        get isRefreshing() {
+            return refreshWorker !== null;
+        },
+        /**
+         * Produces true if the cycler SHOULD refresh (we are within the refresh
+         * window and not already refreshing)
+         */
+        get shouldRefresh() {
+            var _a;
+            return (!cycler.isRefreshing &&
+                ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());
+        },
+        /**
+         * Produces true if the cycler MUST refresh (null or nearly-expired
+         * token).
+         */
+        get mustRefresh() {
+            return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());
+        }
+    };
+    /**
+     * Starts a refresh job or returns the existing job if one is already
+     * running.
+     */
+    function refresh(getTokenOptions) {
+        var _a;
+        if (!cycler.isRefreshing) {
+            // We bind `scopes` here to avoid passing it around a lot
+            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);
+            // Take advantage of promise chaining to insert an assignment to `token`
+            // before the refresh can be considered done.
+            refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, 
+            // If we don't have a token, then we should timeout immediately
+            (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())
+                .then((_token) => {
+                refreshWorker = null;
+                token = _token;
+                return token;
+            })
+                .catch((reason) => {
+                // We also should reset the refresher if we enter a failed state.  All
+                // existing awaiters will throw, but subsequent requests will start a
+                // new retry chain.
+                refreshWorker = null;
+                token = null;
+                throw reason;
+            });
+        }
+        return refreshWorker;
+    }
+    return async (tokenOptions) => {
+        //
+        // Simple rules:
+        // - If we MUST refresh, then return the refresh task, blocking
+        //   the pipeline until a token is available.
+        // - If we SHOULD refresh, then run refresh but don't return it
+        //   (we can still use the cached token).
+        // - Return the token, since it's fine if we didn't return in
+        //   step 1.
+        //
+        if (cycler.mustRefresh)
+            return refresh(tokenOptions);
+        if (cycler.shouldRefresh) {
+            refresh(tokenOptions);
+        }
+        return token;
+    };
+}
+// #endregion
+/**
+ * Creates a new factory for a RequestPolicy that applies a bearer token to
+ * the requests' `Authorization` headers.
+ *
+ * @param credential - The TokenCredential implementation that can supply the bearer token.
+ * @param scopes - The scopes for which the bearer token applies.
  */
 function bearerTokenAuthenticationPolicy(credential, scopes) {
-    var tokenCache = new ExpiringAccessTokenCache();
-    var tokenRefresher = new AccessTokenRefresher(credential, scopes, timeBetweenRefreshAttemptsInMs);
+    // This simple function encapsulates the entire process of reliably retrieving the token
+    const getToken = createTokenCycler(credential, scopes /* , options */);
+    class BearerTokenAuthenticationPolicy extends BaseRequestPolicy {
+        constructor(nextPolicy, options) {
+            super(nextPolicy, options);
+        }
+        async sendRequest(webResource) {
+            if (!webResource.url.toLowerCase().startsWith("https://")) {
+                throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");
+            }
+            const { token } = await getToken({
+                abortSignal: webResource.abortSignal,
+                tracingOptions: {
+                    tracingContext: webResource.tracingContext
+                }
+            });
+            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);
+            return this._nextPolicy.sendRequest(webResource);
+        }
+    }
     return {
-        create: function (nextPolicy, options) {
-            return new BearerTokenAuthenticationPolicy(nextPolicy, options, tokenCache, tokenRefresher);
+        create: (nextPolicy, options) => {
+            return new BearerTokenAuthenticationPolicy(nextPolicy, options);
         }
     };
 }
-/**
- * The automated token refresh will only start to happen at the
- * expiration date minus the value of timeBetweenRefreshAttemptsInMs,
- * which is by default 30 seconds.
- */
-var timeBetweenRefreshAttemptsInMs = 30000;
-/**
- *
- * Provides a RequestPolicy that can request a token from a TokenCredential
- * implementation and then apply it to the Authorization header of a request
- * as a Bearer token.
- *
- */
-var BearerTokenAuthenticationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BearerTokenAuthenticationPolicy, _super);
-    /**
-     * Creates a new BearerTokenAuthenticationPolicy object.
-     *
-     * @param nextPolicy The next RequestPolicy in the request pipeline.
-     * @param options Options for this RequestPolicy.
-     * @param credential The TokenCredential implementation that can supply the bearer token.
-     * @param scopes The scopes for which the bearer token applies.
-     * @param tokenCache The cache for the most recent AccessToken returned from the TokenCredential.
-     */
-    function BearerTokenAuthenticationPolicy(nextPolicy, options, tokenCache, tokenRefresher) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.tokenCache = tokenCache;
-        _this.tokenRefresher = tokenRefresher;
-        return _this;
-    }
-    /**
-     * Applies the Bearer token to the request through the Authorization header.
-     * @param webResource
-     */
-    BearerTokenAuthenticationPolicy.prototype.sendRequest = function (webResource) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!webResource.headers)
-                            webResource.headers = new HttpHeaders();
-                        return [4 /*yield*/, this.getToken({
-                                abortSignal: webResource.abortSignal,
-                                tracingOptions: {
-                                    spanOptions: webResource.spanOptions
-                                }
-                            })];
-                    case 1:
-                        token = _a.sent();
-                        webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, "Bearer " + token);
-                        return [2 /*return*/, this._nextPolicy.sendRequest(webResource)];
-                }
-            });
-        });
-    };
-    /**
-     * Attempts a token update if any other time related conditionals have been reached based on the tokenRefresher class.
-     */
-    BearerTokenAuthenticationPolicy.prototype.updateTokenIfNeeded = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var accessToken;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.tokenRefresher.isReady()) return [3 /*break*/, 2];
-                        return [4 /*yield*/, this.tokenRefresher.refresh(options)];
-                    case 1:
-                        accessToken = _a.sent();
-                        this.tokenCache.setCachedToken(accessToken);
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BearerTokenAuthenticationPolicy.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var accessToken;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        accessToken = this.tokenCache.getCachedToken();
-                        if (!(accessToken === undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, this.tokenRefresher.refresh(options)];
-                    case 1:
-                        // Waiting for the next refresh only if the cache is unable to retrieve the access token,
-                        // which means that it has expired, or it has never been set.
-                        accessToken = _a.sent();
-                        this.tokenCache.setCachedToken(accessToken);
-                        return [3 /*break*/, 3];
-                    case 2:
-                        // If we still have a cached access token,
-                        // And any other time related conditionals have been reached based on the tokenRefresher class,
-                        // then attempt to refresh without waiting.
-                        this.updateTokenIfNeeded(options);
-                        _a.label = 3;
-                    case 3: return [2 /*return*/, accessToken ? accessToken.token : undefined];
-                }
-            });
-        });
-    };
-    return BearerTokenAuthenticationPolicy;
-}(BaseRequestPolicy));
 
 // Copyright (c) Microsoft Corporation.
 function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);
         }
     };
 }
 /**
- * @class
- * Instantiates a new "ExponentialRetryPolicyFilter" instance.
- *
- * @constructor
- * @param {number} retryCount        The client retry count.
- * @param {number} retryInterval     The client retry interval, in milliseconds.
- * @param {number} minRetryInterval  The minimum retry interval, in milliseconds.
- * @param {number} maxRetryInterval  The maximum retry interval, in milliseconds.
+ * @param retryCount - The client retry count.
+ * @param retryInterval - The client retry interval, in milliseconds.
+ * @param minRetryInterval - The minimum retry interval, in milliseconds.
+ * @param maxRetryInterval - The maximum retry interval, in milliseconds.
  */
-var SystemErrorRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SystemErrorRetryPolicy, _super);
-    function SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.minRetryInterval = isNumber(minRetryInterval)
+class SystemErrorRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.minRetryInterval = isNumber(minRetryInterval)
             ? minRetryInterval
             : DEFAULT_CLIENT_MIN_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    SystemErrorRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .catch(function (error) { return retry$1(_this, request, error.response, error); });
-    };
-    return SystemErrorRetryPolicy;
-}(BaseRequestPolicy));
-function retry$1(policy, request, operationResponse, err, retryData) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(_response, error) {
-            if (error &&
-                error.code &&
-                (error.code === "ETIMEDOUT" ||
-                    error.code === "ESOCKETTIMEDOUT" ||
-                    error.code === "ECONNREFUSED" ||
-                    error.code === "ECONNRESET" ||
-                    error.code === "ENOENT")) {
-                return true;
-            }
-            return false;
+            .catch((error) => retry$1(this, request, error.response, error));
+    }
+}
+async function retry$1(policy, request, operationResponse, err, retryData) {
+    retryData = updateRetryData(policy, retryData, err);
+    function shouldPolicyRetry(_response, error) {
+        if (error &&
+            error.code &&
+            (error.code === "ETIMEDOUT" ||
+                error.code === "ESOCKETTIMEDOUT" ||
+                error.code === "ECONNREFUSED" ||
+                error.code === "ECONNRESET" ||
+                error.code === "ENOENT")) {
+            return true;
         }
-        var err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData(policy, retryData, err);
-                    if (!shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) return [3 /*break*/, 5];
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 3, , 4]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [2 /*return*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry$1(policy, request, operationResponse, err_1, retryData)];
-                case 4: return [3 /*break*/, 6];
-                case 5:
-                    if (err) {
-                        // If the operation failed in the end, return all errors instead of just the last one
-                        return [2 /*return*/, Promise.reject(retryData.error)];
-                    }
-                    return [2 /*return*/, operationResponse];
-                case 6: return [2 /*return*/];
-            }
-        });
-    });
+        return false;
+    }
+    if (shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) {
+        // If previous operation ended with an error and the policy allows a retry, do that
+        try {
+            await delay(retryData.retryInterval);
+            return policy._nextPolicy.sendRequest(request.clone());
+        }
+        catch (nestedErr) {
+            return retry$1(policy, request, operationResponse, nestedErr, retryData);
+        }
+    }
+    else {
+        if (err) {
+            // If the operation failed in the end, return all errors instead of just the last one
+            return Promise.reject(retryData.error);
+        }
+        return operationResponse;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -54933,57 +57339,72 @@ function retry$1(policy, request, operationResponse, err, retryData) {
 })(exports.QueryCollectionFormat || (exports.QueryCollectionFormat = {}));
 
 // Copyright (c) Microsoft Corporation.
-var noProxyList = [];
-var isNoProxyInitalized = false;
-var byPassedList = new Map();
+/**
+ * Stores the patterns specified in NO_PROXY environment variable.
+ * @internal
+ */
+const globalNoProxyList = [];
+let noProxyListLoaded = false;
+/** A cache of whether a host should bypass the proxy. */
+const globalBypassedMap = new Map();
 function loadEnvironmentProxyValue() {
     if (!process) {
         return undefined;
     }
-    var httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
-    var allProxy = getEnvironmentValue(Constants.ALL_PROXY);
-    var httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
+    const httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
+    const allProxy = getEnvironmentValue(Constants.ALL_PROXY);
+    const httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
     return httpsProxy || allProxy || httpProxy;
 }
-// Check whether the given `uri` matches the noProxyList. If it matches, any request sent to that same `uri` won't set the proxy settings.
-function isBypassed(uri) {
-    if (byPassedList.has(uri)) {
-        return byPassedList.get(uri);
+/**
+ * Check whether the host of a given `uri` matches any pattern in the no proxy list.
+ * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
+ * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
+ */
+function isBypassed(uri, noProxyList, bypassedMap) {
+    if (noProxyList.length === 0) {
+        return false;
     }
-    loadNoProxy();
-    var isBypassed = false;
-    var host = URLBuilder.parse(uri).getHost();
-    for (var _i = 0, noProxyList_1 = noProxyList; _i < noProxyList_1.length; _i++) {
-        var proxyString = noProxyList_1[_i];
-        if (proxyString[0] === ".") {
-            if (uri.endsWith(proxyString)) {
-                isBypassed = true;
+    const host = URLBuilder.parse(uri).getHost();
+    if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {
+        return bypassedMap.get(host);
+    }
+    let isBypassedFlag = false;
+    for (const pattern of noProxyList) {
+        if (pattern[0] === ".") {
+            // This should match either domain it self or any subdomain or host
+            // .foo.com will match foo.com it self or *.foo.com
+            if (host.endsWith(pattern)) {
+                isBypassedFlag = true;
             }
             else {
-                if (host === proxyString.slice(1) && host.length === proxyString.length - 1) {
-                    isBypassed = true;
+                if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
+                    isBypassedFlag = true;
                 }
             }
         }
         else {
-            if (host === proxyString) {
-                isBypassed = true;
+            if (host === pattern) {
+                isBypassedFlag = true;
             }
         }
     }
-    byPassedList.set(uri, isBypassed);
-    return isBypassed;
+    bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);
+    return isBypassedFlag;
 }
+/**
+ * @internal
+ */
 function loadNoProxy() {
-    if (isNoProxyInitalized) {
-        return;
-    }
-    var noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    const noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    noProxyListLoaded = true;
     if (noProxy) {
-        var list = noProxy.split(",");
-        noProxyList = list.map(function (item) { return item.trim(); }).filter(function (item) { return item.length; });
+        return noProxy
+            .split(",")
+            .map((item) => item.trim())
+            .filter((item) => item.length);
     }
-    isNoProxyInitalized = true;
+    return [];
 }
 function getDefaultProxySettings(proxyUrl) {
     if (!proxyUrl) {
@@ -54992,171 +57413,184 @@ function getDefaultProxySettings(proxyUrl) {
             return undefined;
         }
     }
-    var _a = extractAuthFromUrl(proxyUrl), username = _a.username, password = _a.password, urlWithoutAuth = _a.urlWithoutAuth;
-    var parsedUrl = URLBuilder.parse(urlWithoutAuth);
-    var schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
+    const { username, password, urlWithoutAuth } = extractAuthFromUrl(proxyUrl);
+    const parsedUrl = URLBuilder.parse(urlWithoutAuth);
+    const schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
     return {
         host: schema + parsedUrl.getHost(),
         port: Number.parseInt(parsedUrl.getPort() || "80"),
-        username: username,
-        password: password
+        username,
+        password
     };
 }
-function proxyPolicy(proxySettings) {
+/**
+ * A policy that allows one to apply proxy settings to all requests.
+ * If not passed static settings, they will be retrieved from the HTTPS_PROXY
+ * or HTTP_PROXY environment variables.
+ * @param proxySettings - ProxySettings to use on each request.
+ * @param options - additional settings, for example, custom NO_PROXY patterns
+ */
+function proxyPolicy(proxySettings, options) {
     if (!proxySettings) {
         proxySettings = getDefaultProxySettings();
     }
+    if (!noProxyListLoaded) {
+        globalNoProxyList.push(...loadNoProxy());
+    }
     return {
-        create: function (nextPolicy, options) {
-            return new ProxyPolicy(nextPolicy, options, proxySettings);
+        create: (nextPolicy, requestPolicyOptions) => {
+            return new ProxyPolicy(nextPolicy, requestPolicyOptions, proxySettings, options === null || options === void 0 ? void 0 : options.customNoProxyList);
         }
     };
 }
 function extractAuthFromUrl(url) {
-    var atIndex = url.indexOf("@");
+    const atIndex = url.indexOf("@");
     if (atIndex === -1) {
         return { urlWithoutAuth: url };
     }
-    var schemeIndex = url.indexOf("://");
-    var authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
-    var auth = url.substring(authStart, atIndex);
-    var colonIndex = auth.indexOf(":");
-    var hasPassword = colonIndex !== -1;
-    var username = hasPassword ? auth.substring(0, colonIndex) : auth;
-    var password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
-    var urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
+    const schemeIndex = url.indexOf("://");
+    const authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
+    const auth = url.substring(authStart, atIndex);
+    const colonIndex = auth.indexOf(":");
+    const hasPassword = colonIndex !== -1;
+    const username = hasPassword ? auth.substring(0, colonIndex) : auth;
+    const password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
+    const urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
     return {
-        username: username,
-        password: password,
-        urlWithoutAuth: urlWithoutAuth
+        username,
+        password,
+        urlWithoutAuth
     };
 }
-var ProxyPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ProxyPolicy, _super);
-    function ProxyPolicy(nextPolicy, options, proxySettings) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.proxySettings = proxySettings;
-        return _this;
+class ProxyPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, proxySettings, customNoProxyList) {
+        super(nextPolicy, options);
+        this.proxySettings = proxySettings;
+        this.customNoProxyList = customNoProxyList;
     }
-    ProxyPolicy.prototype.sendRequest = function (request) {
-        if (!request.proxySettings && !isBypassed(request.url)) {
+    sendRequest(request) {
+        var _a;
+        if (!request.proxySettings &&
+            !isBypassed(request.url, (_a = this.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, this.customNoProxyList ? undefined : globalBypassedMap)) {
             request.proxySettings = this.proxySettings;
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return ProxyPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var StatusCodes = Constants.HttpConstants.StatusCodes;
+// Licensed under the MIT license.
+/**
+ * Maximum number of retries for the throttling retry policy
+ */
+const DEFAULT_CLIENT_MAX_RETRY_COUNT = 3;
+
+// Copyright (c) Microsoft Corporation.
+const StatusCodes = Constants.HttpConstants.StatusCodes;
 function throttlingRetryPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ThrottlingRetryPolicy(nextPolicy, options);
         }
     };
 }
+const StandardAbortMessage$1 = "The operation was aborted.";
 /**
  * To learn more, please refer to
  * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,
  * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and
  * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors
  */
-var ThrottlingRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ThrottlingRetryPolicy, _super);
-    function ThrottlingRetryPolicy(nextPolicy, options, _handleResponse) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._handleResponse = _handleResponse || _this._defaultResponseHandler;
-        return _this;
+class ThrottlingRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _handleResponse) {
+        super(nextPolicy, options);
+        this.numberOfRetries = 0;
+        this._handleResponse = _handleResponse || this._defaultResponseHandler;
     }
-    ThrottlingRetryPolicy.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(httpRequest.clone()).then(function (response) {
-                        if (response.status !== StatusCodes.TooManyRequests) {
-                            return response;
-                        }
-                        else {
-                            return _this._handleResponse(httpRequest, response);
-                        }
-                    })];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.prototype._defaultResponseHandler = function (httpRequest, httpResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var retryAfterHeader, delayInMs;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
-                if (retryAfterHeader) {
-                    delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
-                    if (delayInMs) {
-                        return [2 /*return*/, delay(delayInMs).then(function (_) { return _this._nextPolicy.sendRequest(httpRequest); })];
-                    }
+    async sendRequest(httpRequest) {
+        const response = await this._nextPolicy.sendRequest(httpRequest.clone());
+        if (response.status !== StatusCodes.TooManyRequests &&
+            response.status !== StatusCodes.ServiceUnavailable) {
+            return response;
+        }
+        else {
+            return this._handleResponse(httpRequest, response);
+        }
+    }
+    async _defaultResponseHandler(httpRequest, httpResponse) {
+        var _a;
+        const retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
+        if (retryAfterHeader) {
+            const delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
+            if (delayInMs) {
+                this.numberOfRetries += 1;
+                await delay(delayInMs, undefined, {
+                    abortSignal: httpRequest.abortSignal,
+                    abortErrorMsg: StandardAbortMessage$1
+                });
+                if ((_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+                    throw new abortController.AbortError(StandardAbortMessage$1);
                 }
-                return [2 /*return*/, httpResponse];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.parseRetryAfterHeader = function (headerValue) {
-        var retryAfterInSeconds = Number(headerValue);
+                if (this.numberOfRetries < DEFAULT_CLIENT_MAX_RETRY_COUNT) {
+                    return this.sendRequest(httpRequest);
+                }
+                else {
+                    return this._nextPolicy.sendRequest(httpRequest);
+                }
+            }
+        }
+        return httpResponse;
+    }
+    static parseRetryAfterHeader(headerValue) {
+        const retryAfterInSeconds = Number(headerValue);
         if (Number.isNaN(retryAfterInSeconds)) {
             return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);
         }
         else {
             return retryAfterInSeconds * 1000;
         }
-    };
-    ThrottlingRetryPolicy.parseDateRetryAfterHeader = function (headerValue) {
+    }
+    static parseDateRetryAfterHeader(headerValue) {
         try {
-            var now = Date.now();
-            var date = Date.parse(headerValue);
-            var diff = date - now;
+            const now = Date.now();
+            const date = Date.parse(headerValue);
+            const diff = date - now;
             return Number.isNaN(diff) ? undefined : diff;
         }
         catch (error) {
             return undefined;
         }
-    };
-    return ThrottlingRetryPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function signingPolicy(authenticationProvider) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SigningPolicy(nextPolicy, options, authenticationProvider);
         }
     };
 }
-var SigningPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SigningPolicy, _super);
-    function SigningPolicy(nextPolicy, options, authenticationProvider) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.authenticationProvider = authenticationProvider;
-        return _this;
+class SigningPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, authenticationProvider) {
+        super(nextPolicy, options);
+        this.authenticationProvider = authenticationProvider;
     }
-    SigningPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         return this.authenticationProvider.signRequest(request);
-    };
-    SigningPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
-        return this.signRequest(request).then(function (nextRequest) {
-            return _this._nextPolicy.sendRequest(nextRequest);
-        });
-    };
-    return SigningPolicy;
-}(BaseRequestPolicy));
+    }
+    sendRequest(request) {
+        return this.signRequest(request).then((nextRequest) => this._nextPolicy.sendRequest(nextRequest));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultKeepAliveOptions = {
+const DefaultKeepAliveOptions = {
     enable: true
 };
 function keepAlivePolicy(keepAliveOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);
         }
     };
@@ -55164,109 +57598,144 @@ function keepAlivePolicy(keepAliveOptions) {
 /**
  * KeepAlivePolicy is a policy used to control keep alive settings for every request.
  */
-var KeepAlivePolicy = /** @class */ (function (_super) {
-    tslib.__extends(KeepAlivePolicy, _super);
+class KeepAlivePolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {KeepAliveOptions} [keepAliveOptions]
+     * @param nextPolicy -
+     * @param options -
+     * @param keepAliveOptions -
      */
-    function KeepAlivePolicy(nextPolicy, options, keepAliveOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.keepAliveOptions = keepAliveOptions;
-        return _this;
+    constructor(nextPolicy, options, keepAliveOptions) {
+        super(nextPolicy, options);
+        this.keepAliveOptions = keepAliveOptions;
     }
     /**
      * Sends out request.
      *
-     * @param {WebResourceLike} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof KeepAlivePolicy
+     * @param request -
+     * @returns
      */
-    KeepAlivePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.keepAlive = this.keepAliveOptions.enable;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return KeepAlivePolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.keepAlive = this.keepAliveOptions.enable;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function tracingPolicy(tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
+const createSpan = coreTracing.createSpanFunction({
+    packagePrefix: "",
+    namespace: ""
+});
+function tracingPolicy(tracingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create(nextPolicy, options) {
             return new TracingPolicy(nextPolicy, options, tracingOptions);
         }
     };
 }
-var TracingPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TracingPolicy, _super);
-    function TracingPolicy(nextPolicy, options, tracingOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.userAgent = tracingOptions.userAgent;
-        return _this;
+class TracingPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, tracingOptions) {
+        super(nextPolicy, options);
+        this.userAgent = tracingOptions.userAgent;
     }
-    TracingPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var tracer, spanOptions, path, span, spanContext, traceParentHeader, traceState, response, serviceRequestId, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!request.spanOptions || !request.spanOptions.parent) {
-                            return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                        }
-                        tracer = coreTracing.getTracer();
-                        spanOptions = tslib.__assign(tslib.__assign({}, request.spanOptions), { kind: api.SpanKind.CLIENT });
-                        path = URLBuilder.parse(request.url).getPath() || "/";
-                        span = tracer.startSpan(path, spanOptions);
-                        span.setAttributes({
-                            "http.method": request.method,
-                            "http.url": request.url,
-                            requestId: request.requestId
-                        });
-                        if (this.userAgent) {
-                            span.setAttribute("http.user_agent", this.userAgent);
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        spanContext = span.context();
-                        traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
-                        if (traceParentHeader) {
-                            request.headers.set("traceparent", traceParentHeader);
-                            traceState = spanContext.traceState && spanContext.traceState.serialize();
-                            // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
-                            if (traceState) {
-                                request.headers.set("tracestate", traceState);
-                            }
-                        }
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(request)];
-                    case 2:
-                        response = _a.sent();
-                        span.setAttribute("http.status_code", response.status);
-                        serviceRequestId = response.headers.get("x-ms-request-id");
-                        if (serviceRequestId) {
-                            span.setAttribute("serviceRequestId", serviceRequestId);
-                        }
-                        span.end();
-                        return [2 /*return*/, response];
-                    case 3:
-                        err_1 = _a.sent();
-                        span.end();
-                        throw err_1;
-                    case 4: return [2 /*return*/];
+    async sendRequest(request) {
+        if (!request.tracingContext) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        const span = this.tryCreateSpan(request);
+        if (!span) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        try {
+            const response = await this._nextPolicy.sendRequest(request);
+            this.tryProcessResponse(span, response);
+            return response;
+        }
+        catch (err) {
+            this.tryProcessError(span, err);
+            throw err;
+        }
+    }
+    tryCreateSpan(request) {
+        var _a;
+        try {
+            const path = URLBuilder.parse(request.url).getPath() || "/";
+            // Passing spanOptions as part of tracingOptions to maintain compatibility @azure/core-tracing@preview.13 and earlier.
+            // We can pass this as a separate parameter once we upgrade to the latest core-tracing.
+            const { span } = createSpan(path, {
+                tracingOptions: {
+                    spanOptions: Object.assign(Object.assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
+                    tracingContext: request.tracingContext
                 }
             });
-        });
-    };
-    return TracingPolicy;
-}(BaseRequestPolicy));
+            // If the span is not recording, don't do any more work.
+            if (!span.isRecording()) {
+                span.end();
+                return undefined;
+            }
+            const namespaceFromContext = (_a = request.tracingContext) === null || _a === void 0 ? void 0 : _a.getValue(Symbol.for("az.namespace"));
+            if (typeof namespaceFromContext === "string") {
+                span.setAttribute("az.namespace", namespaceFromContext);
+            }
+            span.setAttributes({
+                "http.method": request.method,
+                "http.url": request.url,
+                requestId: request.requestId
+            });
+            if (this.userAgent) {
+                span.setAttribute("http.user_agent", this.userAgent);
+            }
+            // set headers
+            const spanContext = span.spanContext();
+            const traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
+            if (traceParentHeader && coreTracing.isSpanContextValid(spanContext)) {
+                request.headers.set("traceparent", traceParentHeader);
+                const traceState = spanContext.traceState && spanContext.traceState.serialize();
+                // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
+                if (traceState) {
+                    request.headers.set("tracestate", traceState);
+                }
+            }
+            return span;
+        }
+        catch (error) {
+            logger.warning(`Skipping creating a tracing span due to an error: ${error.message}`);
+            return undefined;
+        }
+    }
+    tryProcessError(span, err) {
+        try {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: err.message
+            });
+            if (err.statusCode) {
+                span.setAttribute("http.status_code", err.statusCode);
+            }
+            span.end();
+        }
+        catch (error) {
+            logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);
+        }
+    }
+    tryProcessResponse(span, response) {
+        try {
+            span.setAttribute("http.status_code", response.status);
+            const serviceRequestId = response.headers.get("x-ms-request-id");
+            if (serviceRequestId) {
+                span.setAttribute("serviceRequestId", serviceRequestId);
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.OK
+            });
+            span.end();
+        }
+        catch (error) {
+            logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -55275,7 +57744,7 @@ var TracingPolicy = /** @class */ (function (_super) {
  */
 function disableResponseDecompressionPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DisableResponseDecompressionPolicy(nextPolicy, options);
         }
     };
@@ -55284,40 +57753,34 @@ function disableResponseDecompressionPolicy() {
  * A policy to disable response decompression according to Accept-Encoding header
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
  */
-var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DisableResponseDecompressionPolicy, _super);
+class DisableResponseDecompressionPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of DisableResponseDecompressionPolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
+     * @param nextPolicy -
+     * @param options -
      */
     // The parent constructor is protected.
     /* eslint-disable-next-line @typescript-eslint/no-useless-constructor */
-    function DisableResponseDecompressionPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
+     * @param request -
+     * @returns
      */
-    DisableResponseDecompressionPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.decompressResponse = false;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return DisableResponseDecompressionPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.decompressResponse = false;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function ndJsonPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new NdJsonPolicy(nextPolicy, options);
         }
     };
@@ -55325,69 +57788,63 @@ function ndJsonPolicy() {
 /**
  * NdJsonPolicy that formats a JSON array as newline-delimited JSON
  */
-var NdJsonPolicy = /** @class */ (function (_super) {
-    tslib.__extends(NdJsonPolicy, _super);
+class NdJsonPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
-     *
-     * @param nextPolicy
-     * @param options
      */
-    function NdJsonPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends a request.
-     *
-     * @param request
      */
-    NdJsonPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var body;
-            return tslib.__generator(this, function (_a) {
-                // There currently isn't a good way to bypass the serializer
-                if (typeof request.body === "string" && request.body.startsWith("[")) {
-                    body = JSON.parse(request.body);
-                    if (Array.isArray(body)) {
-                        request.body = body.map(function (item) { return JSON.stringify(item) + "\n"; }).join("");
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return NdJsonPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        // There currently isn't a good way to bypass the serializer
+        if (typeof request.body === "string" && request.body.startsWith("[")) {
+            const body = JSON.parse(request.body);
+            if (Array.isArray(body)) {
+                request.body = body.map((item) => JSON.stringify(item) + "\n").join("");
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+let cachedHttpClient;
+function getCachedDefaultHttpClient() {
+    if (!cachedHttpClient) {
+        cachedHttpClient = new NodeFetchHttpClient();
+    }
+    return cachedHttpClient;
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
- * @class
- * Initializes a new instance of the ServiceClient.
+ * ServiceClient sends service requests and receives responses.
  */
-var ServiceClient = /** @class */ (function () {
+class ServiceClient {
     /**
      * The ServiceClient constructor
-     * @constructor
-     * @param credentials The credentials used for authentication with the service.
-     * @param options The service client options that govern the behavior of the client.
+     * @param credentials - The credentials used for authentication with the service.
+     * @param options - The service client options that govern the behavior of the client.
      */
-    function ServiceClient(credentials, 
+    constructor(credentials, 
     /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */
     options) {
-        var _this = this;
         if (!options) {
             options = {};
         }
         this._withCredentials = options.withCredentials || false;
-        this._httpClient = options.httpClient || new NodeFetchHttpClient();
+        this._httpClient = options.httpClient || getCachedDefaultHttpClient();
         this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);
-        var requestPolicyFactories;
+        let requestPolicyFactories;
         if (Array.isArray(options.requestPolicyFactories)) {
             logger.info("ServiceClient: using custom request policies");
             requestPolicyFactories = options.requestPolicyFactories;
         }
         else {
-            var authPolicyFactory = undefined;
+            let authPolicyFactory = undefined;
             if (coreAuth.isTokenCredential(credentials)) {
                 logger.info("ServiceClient: creating bearer token authentication policy from provided credentials");
                 // Create a wrapped RequestPolicyFactory here so that we can provide the
@@ -55396,16 +57853,21 @@ var ServiceClient = /** @class */ (function () {
                 // implementations do not set baseUri until after ServiceClient's constructor
                 // is finished, leaving baseUri empty at the time when it is needed to
                 // build the correct scope name.
-                var wrappedPolicyFactory = function () {
-                    var bearerTokenPolicyFactory = undefined;
+                const wrappedPolicyFactory = () => {
+                    let bearerTokenPolicyFactory = undefined;
                     // eslint-disable-next-line @typescript-eslint/no-this-alias
-                    var serviceClient = _this;
+                    const serviceClient = this;
+                    const serviceClientOptions = options;
                     return {
-                        create: function (nextPolicy, options) {
-                            if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
-                                bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, (serviceClient.baseUri || "") + "/.default");
+                        create(nextPolicy, createOptions) {
+                            const credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
+                            if (!credentialScopes) {
+                                throw new Error(`When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy`);
                             }
-                            return bearerTokenPolicyFactory.create(nextPolicy, options);
+                            if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
+                                bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);
+                            }
+                            return bearerTokenPolicyFactory.create(nextPolicy, createOptions);
                         }
                     };
                 };
@@ -55423,7 +57885,7 @@ var ServiceClient = /** @class */ (function () {
             if (options.requestPolicyFactories) {
                 // options.requestPolicyFactories can also be a function that manipulates
                 // the default requestPolicyFactories array
-                var newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
+                const newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
                 if (newRequestPolicyFactories) {
                     requestPolicyFactories = newRequestPolicyFactories;
                 }
@@ -55434,11 +57896,11 @@ var ServiceClient = /** @class */ (function () {
     /**
      * Send the provided httpRequest.
      */
-    ServiceClient.prototype.sendRequest = function (options) {
+    sendRequest(options) {
         if (options === null || options === undefined || typeof options !== "object") {
             throw new Error("options cannot be null or undefined and it must be of type object.");
         }
-        var httpRequest;
+        let httpRequest;
         try {
             if (isWebResourceLike(options)) {
                 options.validateRequestProperties();
@@ -55452,231 +57914,226 @@ var ServiceClient = /** @class */ (function () {
         catch (error) {
             return Promise.reject(error);
         }
-        var httpPipeline = this._httpClient;
+        let httpPipeline = this._httpClient;
         if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {
-            for (var i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
+            for (let i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
                 httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);
             }
         }
         return httpPipeline.sendRequest(httpRequest);
-    };
+    }
     /**
      * Send an HTTP request that is populated using the provided OperationSpec.
-     * @param {OperationArguments} operationArguments The arguments that the HTTP request's templated values will be populated from.
-     * @param {OperationSpec} operationSpec The OperationSpec to use to populate the httpRequest.
-     * @param {ServiceCallback} callback The callback to call when the response is received.
+     * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.
+     * @param operationSpec - The OperationSpec to use to populate the httpRequest.
+     * @param callback - The callback to call when the response is received.
      */
-    ServiceClient.prototype.sendOperationRequest = function (operationArguments, operationSpec, callback) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var httpRequest, result, baseUri, requestUrl, _i, _a, urlParameter, urlParameterValue, _b, _c, queryParameter, queryParameterValue, index, item, index, contentType, _d, _e, headerParameter, headerValue, headerCollectionPrefix, _f, _g, key, options, customHeaderName, rawResponse, sendRequestError, error_1, error_2, cb;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        if (typeof operationArguments.options === "function") {
-                            callback = operationArguments.options;
-                            operationArguments.options = undefined;
-                        }
-                        httpRequest = new WebResource();
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 6, , 7]);
-                        baseUri = operationSpec.baseUrl || this.baseUri;
-                        if (!baseUri) {
-                            throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
-                        }
-                        httpRequest.method = operationSpec.httpMethod;
-                        httpRequest.operationSpec = operationSpec;
-                        requestUrl = URLBuilder.parse(baseUri);
-                        if (operationSpec.path) {
-                            requestUrl.appendPath(operationSpec.path);
-                        }
-                        if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
-                            for (_i = 0, _a = operationSpec.urlParameters; _i < _a.length; _i++) {
-                                urlParameter = _a[_i];
-                                urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
-                                urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter));
-                                if (!urlParameter.skipEncoding) {
-                                    urlParameterValue = encodeURIComponent(urlParameterValue);
+    async sendOperationRequest(operationArguments, operationSpec, callback) {
+        var _a;
+        if (typeof operationArguments.options === "function") {
+            callback = operationArguments.options;
+            operationArguments.options = undefined;
+        }
+        const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+        const httpRequest = new WebResource();
+        let result;
+        try {
+            const baseUri = operationSpec.baseUrl || this.baseUri;
+            if (!baseUri) {
+                throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
+            }
+            httpRequest.method = operationSpec.httpMethod;
+            httpRequest.operationSpec = operationSpec;
+            const requestUrl = URLBuilder.parse(baseUri);
+            if (operationSpec.path) {
+                requestUrl.appendPath(operationSpec.path);
+            }
+            if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
+                for (const urlParameter of operationSpec.urlParameters) {
+                    let urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
+                    urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
+                    if (!urlParameter.skipEncoding) {
+                        urlParameterValue = encodeURIComponent(urlParameterValue);
+                    }
+                    requestUrl.replaceAll(`{${urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)}}`, urlParameterValue);
+                }
+            }
+            if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
+                for (const queryParameter of operationSpec.queryParameters) {
+                    let queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
+                    if (queryParameterValue !== undefined && queryParameterValue !== null) {
+                        queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null) {
+                            if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
+                                if (queryParameterValue.length === 0) {
+                                    // The collection is empty, no need to try serializing the current queryParam
+                                    continue;
                                 }
-                                requestUrl.replaceAll("{" + (urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)) + "}", urlParameterValue);
-                            }
-                        }
-                        if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
-                            for (_b = 0, _c = operationSpec.queryParameters; _b < _c.length; _b++) {
-                                queryParameter = _c[_b];
-                                queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
-                                if (queryParameterValue !== undefined && queryParameterValue !== null) {
-                                    queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null) {
-                                        if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
-                                            if (queryParameterValue.length === 0) {
-                                                queryParameterValue = "";
-                                            }
-                                            else {
-                                                for (index in queryParameterValue) {
-                                                    item = queryParameterValue[index];
-                                                    queryParameterValue[index] =
-                                                        item === undefined || item === null ? "" : item.toString();
-                                                }
-                                            }
-                                        }
-                                        else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
-                                            queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
-                                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                        }
-                                    }
-                                    if (!queryParameter.skipEncoding) {
-                                        if (Array.isArray(queryParameterValue)) {
-                                            for (index in queryParameterValue) {
-                                                if (queryParameterValue[index] !== undefined &&
-                                                    queryParameterValue[index] !== null) {
-                                                    queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
-                                                }
-                                            }
-                                        }
-                                        else {
-                                            queryParameterValue = encodeURIComponent(queryParameterValue);
-                                        }
-                                    }
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
-                                        queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                    }
-                                    requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
-                                }
-                            }
-                        }
-                        httpRequest.url = requestUrl.toString();
-                        contentType = operationSpec.contentType || this.requestContentType;
-                        if (contentType) {
-                            httpRequest.headers.set("Content-Type", contentType);
-                        }
-                        if (operationSpec.headerParameters) {
-                            for (_d = 0, _e = operationSpec.headerParameters; _d < _e.length; _d++) {
-                                headerParameter = _e[_d];
-                                headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
-                                if (headerValue !== undefined && headerValue !== null) {
-                                    headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));
-                                    headerCollectionPrefix = headerParameter.mapper
-                                        .headerCollectionPrefix;
-                                    if (headerCollectionPrefix) {
-                                        for (_f = 0, _g = Object.keys(headerValue); _f < _g.length; _f++) {
-                                            key = _g[_f];
-                                            httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
-                                        }
-                                    }
-                                    else {
-                                        httpRequest.headers.set(headerParameter.mapper.serializedName ||
-                                            getPathStringFromParameter(headerParameter), headerValue);
+                                else {
+                                    for (const index in queryParameterValue) {
+                                        const item = queryParameterValue[index];
+                                        queryParameterValue[index] =
+                                            item === undefined || item === null ? "" : item.toString();
                                     }
                                 }
                             }
+                            else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
+                                queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
+                                queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
+                            }
                         }
-                        options = operationArguments.options;
-                        if (options) {
-                            if (options.customHeaders) {
-                                for (customHeaderName in options.customHeaders) {
-                                    httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                        if (!queryParameter.skipEncoding) {
+                            if (Array.isArray(queryParameterValue)) {
+                                for (const index in queryParameterValue) {
+                                    if (queryParameterValue[index] !== undefined &&
+                                        queryParameterValue[index] !== null) {
+                                        queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
+                                    }
                                 }
                             }
-                            if (options.abortSignal) {
-                                httpRequest.abortSignal = options.abortSignal;
-                            }
-                            if (options.timeout) {
-                                httpRequest.timeout = options.timeout;
-                            }
-                            if (options.onUploadProgress) {
-                                httpRequest.onUploadProgress = options.onUploadProgress;
-                            }
-                            if (options.onDownloadProgress) {
-                                httpRequest.onDownloadProgress = options.onDownloadProgress;
-                            }
-                            if (options.spanOptions) {
-                                httpRequest.spanOptions = options.spanOptions;
-                            }
-                            if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
-                                httpRequest.shouldDeserialize = options.shouldDeserialize;
+                            else {
+                                queryParameterValue = encodeURIComponent(queryParameterValue);
                             }
                         }
-                        httpRequest.withCredentials = this._withCredentials;
-                        serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
-                        if (httpRequest.streamResponseBody === undefined || httpRequest.streamResponseBody === null) {
-                            httpRequest.streamResponseBody = isStreamOperation(operationSpec);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
+                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
                         }
-                        rawResponse = void 0;
-                        sendRequestError = void 0;
-                        _h.label = 2;
-                    case 2:
-                        _h.trys.push([2, 4, , 5]);
-                        return [4 /*yield*/, this.sendRequest(httpRequest)];
-                    case 3:
-                        rawResponse = _h.sent();
-                        return [3 /*break*/, 5];
-                    case 4:
-                        error_1 = _h.sent();
-                        sendRequestError = error_1;
-                        return [3 /*break*/, 5];
-                    case 5:
-                        if (sendRequestError) {
-                            if (sendRequestError.response) {
-                                sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
-                                    operationSpec.responses["default"]);
+                        requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
+                    }
+                }
+            }
+            httpRequest.url = requestUrl.toString();
+            const contentType = operationSpec.contentType || this.requestContentType;
+            if (contentType && operationSpec.requestBody) {
+                httpRequest.headers.set("Content-Type", contentType);
+            }
+            if (operationSpec.headerParameters) {
+                for (const headerParameter of operationSpec.headerParameters) {
+                    let headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
+                    if (headerValue !== undefined && headerValue !== null) {
+                        headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
+                        const headerCollectionPrefix = headerParameter.mapper
+                            .headerCollectionPrefix;
+                        if (headerCollectionPrefix) {
+                            for (const key of Object.keys(headerValue)) {
+                                httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
                             }
-                            result = Promise.reject(sendRequestError);
                         }
                         else {
-                            result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+                            httpRequest.headers.set(headerParameter.mapper.serializedName ||
+                                getPathStringFromParameter(headerParameter), headerValue);
                         }
-                        return [3 /*break*/, 7];
-                    case 6:
-                        error_2 = _h.sent();
-                        result = Promise.reject(error_2);
-                        return [3 /*break*/, 7];
-                    case 7:
-                        cb = callback;
-                        if (cb) {
-                            result
-                                // tslint:disable-next-line:no-null-keyword
-                                .then(function (res) { return cb(null, res._response.parsedBody, res._response.request, res._response); })
-                                .catch(function (err) { return cb(err); });
-                        }
-                        return [2 /*return*/, result];
+                    }
                 }
-            });
-        });
-    };
-    return ServiceClient;
-}());
+            }
+            const options = operationArguments.options;
+            if (options) {
+                if (options.customHeaders) {
+                    for (const customHeaderName in options.customHeaders) {
+                        httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                    }
+                }
+                if (options.abortSignal) {
+                    httpRequest.abortSignal = options.abortSignal;
+                }
+                if (options.timeout) {
+                    httpRequest.timeout = options.timeout;
+                }
+                if (options.onUploadProgress) {
+                    httpRequest.onUploadProgress = options.onUploadProgress;
+                }
+                if (options.onDownloadProgress) {
+                    httpRequest.onDownloadProgress = options.onDownloadProgress;
+                }
+                if (options.spanOptions) {
+                    // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+                    httpRequest.spanOptions = options.spanOptions;
+                }
+                if (options.tracingContext) {
+                    httpRequest.tracingContext = options.tracingContext;
+                }
+                if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
+                    httpRequest.shouldDeserialize = options.shouldDeserialize;
+                }
+            }
+            httpRequest.withCredentials = this._withCredentials;
+            serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
+            if (httpRequest.streamResponseStatusCodes === undefined) {
+                httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+            }
+            let rawResponse;
+            let sendRequestError;
+            try {
+                rawResponse = await this.sendRequest(httpRequest);
+            }
+            catch (error) {
+                sendRequestError = error;
+            }
+            if (sendRequestError) {
+                if (sendRequestError.response) {
+                    sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
+                        operationSpec.responses["default"]);
+                }
+                result = Promise.reject(sendRequestError);
+            }
+            else {
+                result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+            }
+        }
+        catch (error) {
+            result = Promise.reject(error);
+        }
+        const cb = callback;
+        if (cb) {
+            result
+                .then((res) => cb(null, res._response.parsedBody, res._response.request, res._response))
+                .catch((err) => cb(err));
+        }
+        return result;
+    }
+}
 function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {
-    var _a;
+    var _a, _b, _c, _d, _e, _f;
+    const serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
+    const updatedOptions = {
+        rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : "",
+        includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,
+        xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY
+    };
+    const xmlCharKey = serializerOptions.xmlCharKey;
     if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
         httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);
-        var bodyMapper = operationSpec.requestBody.mapper;
-        var required = bodyMapper.required, xmlName = bodyMapper.xmlName, xmlElementName = bodyMapper.xmlElementName, serializedName = bodyMapper.serializedName, xmlNamespace = bodyMapper.xmlNamespace, xmlNamespacePrefix = bodyMapper.xmlNamespacePrefix;
-        var typeName = bodyMapper.type.name;
+        const bodyMapper = operationSpec.requestBody.mapper;
+        const { required, xmlName, xmlElementName, serializedName, xmlNamespace, xmlNamespacePrefix } = bodyMapper;
+        const typeName = bodyMapper.type.name;
         try {
             if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {
-                var requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
-                httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString);
-                var isStream = typeName === MapperType.Stream;
+                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
+                httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);
+                const isStream = typeName === MapperType.Stream;
                 if (operationSpec.isXML) {
-                    var xmlnsKey = xmlNamespacePrefix ? "xmlns:" + xmlNamespacePrefix : "xmlns";
-                    var value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body);
+                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
+                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
                     if (typeName === MapperType.Sequence) {
-                        httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName });
+                        httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {
+                            rootName: xmlName || serializedName,
+                            xmlCharKey
+                        });
                     }
                     else if (!isStream) {
                         httpRequest.body = stringifyXML(value, {
-                            rootName: xmlName || serializedName
+                            rootName: xmlName || serializedName,
+                            xmlCharKey
                         });
                     }
                 }
                 else if (typeName === MapperType.String &&
-                    (((_a = operationSpec.contentType) === null || _a === void 0 ? void 0 : _a.match("text/plain")) || operationSpec.mediaType === "text")) {
+                    (((_f = operationSpec.contentType) === null || _f === void 0 ? void 0 : _f.match("text/plain")) || operationSpec.mediaType === "text")) {
                     // the String serializer has validated that request body is a string
                     // so just send the string.
                     return;
@@ -55687,17 +58144,16 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
             }
         }
         catch (error) {
-            throw new Error("Error \"" + error.message + "\" occurred in serializing the payload - " + JSON.stringify(serializedName, undefined, "  ") + ".");
+            throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, "  ")}.`);
         }
     }
     else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
         httpRequest.formData = {};
-        for (var _i = 0, _b = operationSpec.formDataParameters; _i < _b.length; _i++) {
-            var formDataParameter = _b[_i];
-            var formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
+        for (const formDataParameter of operationSpec.formDataParameters) {
+            const formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
             if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
-                var formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
-                httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter));
+                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
+                httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
             }
         }
     }
@@ -55705,17 +58161,19 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
 /**
  * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
  */
-function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue) {
-    var _a;
+function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
     // Composite and Sequence schemas already got their root namespace set during serialization
     // We just need to add xmlns to the other schema types
     if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
-        return { _: serializedValue, $: (_a = {}, _a[xmlnsKey] = xmlNamespace, _a) };
+        const result = {};
+        result[options.xmlCharKey] = serializedValue;
+        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
+        return result;
     }
     return serializedValue;
 }
 function getValueOrFunctionResult(value, defaultValueCreator) {
-    var result;
+    let result;
     if (typeof value === "string") {
         result = value;
     }
@@ -55728,15 +58186,15 @@ function getValueOrFunctionResult(value, defaultValueCreator) {
     return result;
 }
 function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
-    var factories = [];
+    const factories = [];
     if (options.generateClientRequestIdHeader) {
         factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));
     }
     if (authPolicyFactory) {
         factories.push(authPolicyFactory);
     }
-    var userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
-    var userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
+    const userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
+    const userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
     if (userAgentHeaderName && userAgentHeaderValue) {
         factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));
     }
@@ -55748,37 +58206,37 @@ function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
         factories.push(throttlingRetryPolicy());
     }
     factories.push(deserializationPolicy(options.deserializationContentTypes));
-    {
+    if (isNode) {
         factories.push(proxyPolicy(options.proxySettings));
     }
     factories.push(logPolicy({ logger: logger.info }));
     return factories;
 }
 function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
-    var requestPolicyFactories = [];
+    const requestPolicyFactories = [];
     if (pipelineOptions.sendStreamingJson) {
         requestPolicyFactories.push(ndJsonPolicy());
     }
-    var userAgentValue = undefined;
+    let userAgentValue = undefined;
     if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {
-        var userAgentInfo = [];
+        const userAgentInfo = [];
         userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);
         // Add the default user agent value if it isn't already specified
         // by the userAgentPrefix option.
-        var defaultUserAgentInfo = getDefaultUserAgentValue();
+        const defaultUserAgentInfo = getDefaultUserAgentValue();
         if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {
             userAgentInfo.push(defaultUserAgentInfo);
         }
         userAgentValue = userAgentInfo.join(" ");
     }
-    var keepAliveOptions = tslib.__assign(tslib.__assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
-    var retryOptions = tslib.__assign(tslib.__assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
-    var redirectOptions = tslib.__assign(tslib.__assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
-    {
+    const keepAliveOptions = Object.assign(Object.assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
+    const retryOptions = Object.assign(Object.assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
+    const redirectOptions = Object.assign(Object.assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
+    if (isNode) {
         requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));
     }
-    var deserializationOptions = tslib.__assign(tslib.__assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
-    var loggingOptions = tslib.__assign({}, pipelineOptions.loggingOptions);
+    const deserializationOptions = Object.assign(Object.assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
+    const loggingOptions = Object.assign({}, pipelineOptions.loggingOptions);
     requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));
     if (redirectOptions.handleRedirects) {
         requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));
@@ -55792,28 +58250,30 @@ function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
     }
     return {
         httpClient: pipelineOptions.httpClient,
-        requestPolicyFactories: requestPolicyFactories
+        requestPolicyFactories
     };
 }
 function getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {
     return getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameter.parameterPath, parameter.mapper, serializer);
 }
 function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {
-    var value;
+    var _a;
+    let value;
     if (typeof parameterPath === "string") {
         parameterPath = [parameterPath];
     }
+    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
     if (Array.isArray(parameterPath)) {
         if (parameterPath.length > 0) {
             if (parameterMapper.isConstant) {
                 value = parameterMapper.defaultValue;
             }
             else {
-                var propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
+                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
                 if (!propertySearchResult.propertyFound) {
                     propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);
                 }
-                var useDefaultValue = false;
+                let useDefaultValue = false;
                 if (!propertySearchResult.propertyFound) {
                     useDefaultValue =
                         parameterMapper.required ||
@@ -55822,21 +58282,21 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
                 value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;
             }
             // Serialize just for validation purposes.
-            var parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
-            serializer.serialize(parameterMapper, value, parameterPathString);
+            const parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
+            serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);
         }
     }
     else {
         if (parameterMapper.required) {
             value = {};
         }
-        for (var propertyName in parameterPath) {
-            var propertyMapper = parameterMapper.type.modelProperties[propertyName];
-            var propertyPath = parameterPath[propertyName];
-            var propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
+        for (const propertyName in parameterPath) {
+            const propertyMapper = parameterMapper.type.modelProperties[propertyName];
+            const propertyPath = parameterPath[propertyName];
+            const propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
             // Serialize just for validation purposes.
-            var propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
-            serializer.serialize(propertyMapper, propertyValue, propertyPathString);
+            const propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
+            serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);
             if (propertyValue !== undefined && propertyValue !== null) {
                 if (!value) {
                     value = {};
@@ -55848,10 +58308,10 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
     return value;
 }
 function getPropertyFromParameterPath(parent, parameterPath) {
-    var result = { propertyFound: false };
-    var i = 0;
+    const result = { propertyFound: false };
+    let i = 0;
     for (; i < parameterPath.length; ++i) {
-        var parameterPathPart = parameterPath[i];
+        const parameterPathPart = parameterPath[i];
         // Make sure to check inherited properties too, so don't use hasOwnProperty().
         if (parent !== undefined && parent !== null && parameterPathPart in parent) {
             parent = parent[parameterPathPart];
@@ -55867,31 +58327,29 @@ function getPropertyFromParameterPath(parent, parameterPath) {
     return result;
 }
 function flattenResponse(_response, responseSpec) {
-    var parsedHeaders = _response.parsedHeaders;
-    var bodyMapper = responseSpec && responseSpec.bodyMapper;
-    var addOperationResponse = function (obj) {
+    const parsedHeaders = _response.parsedHeaders;
+    const bodyMapper = responseSpec && responseSpec.bodyMapper;
+    const addOperationResponse = (obj) => {
         return Object.defineProperty(obj, "_response", {
             value: _response
         });
     };
     if (bodyMapper) {
-        var typeName = bodyMapper.type.name;
+        const typeName = bodyMapper.type.name;
         if (typeName === "Stream") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
         }
-        var modelProperties_1 = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
-        var isPageableResponse = Object.keys(modelProperties_1).some(function (k) { return modelProperties_1[k].serializedName === ""; });
+        const modelProperties = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
+        const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === "");
         if (typeName === "Sequence" || isPageableResponse) {
-            var arrayResponse = tslib.__spreadArrays((_response.parsedBody || []));
-            for (var _i = 0, _a = Object.keys(modelProperties_1); _i < _a.length; _i++) {
-                var key = _a[_i];
-                if (modelProperties_1[key].serializedName) {
+            const arrayResponse = [...(_response.parsedBody || [])];
+            for (const key of Object.keys(modelProperties)) {
+                if (modelProperties[key].serializedName) {
                     arrayResponse[key] = _response.parsedBody[key];
                 }
             }
             if (parsedHeaders) {
-                for (var _b = 0, _c = Object.keys(parsedHeaders); _b < _c.length; _b++) {
-                    var key = _c[_b];
+                for (const key of Object.keys(parsedHeaders)) {
                     arrayResponse[key] = parsedHeaders[key];
                 }
             }
@@ -55899,32 +58357,136 @@ function flattenResponse(_response, responseSpec) {
             return arrayResponse;
         }
         if (typeName === "Composite" || typeName === "Dictionary") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
         }
     }
     if (bodyMapper ||
         _response.request.method === "HEAD" ||
         isPrimitiveType(_response.parsedBody)) {
         // primitive body types and HEAD booleans
-        return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { body: _response.parsedBody }));
+        return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { body: _response.parsedBody }));
     }
-    return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+    return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
+}
+function getCredentialScopes(options, baseUri) {
+    if (options === null || options === void 0 ? void 0 : options.credentialScopes) {
+        const scopes = options.credentialScopes;
+        return Array.isArray(scopes)
+            ? scopes.map((scope) => new url.URL(scope).toString())
+            : new url.URL(scopes).toString();
+    }
+    if (baseUri) {
+        return `${baseUri}/.default`;
+    }
+    return undefined;
 }
 
 // Copyright (c) Microsoft Corporation.
-var HeaderConstants = Constants.HeaderConstants;
-var DEFAULT_AUTHORIZATION_SCHEME = "Basic";
-var BasicAuthenticationCredentials = /** @class */ (function () {
+/**
+ * This function is only here for compatibility. Use createSpanFunction in core-tracing.
+ *
+ * @deprecated This function is only here for compatibility. Use createSpanFunction in core-tracing.
+ * @hidden
+
+ * @param spanConfig - The name of the operation being performed.
+ * @param tracingOptions - The options for the underlying http request.
+ */
+function createSpanFunction(args) {
+    return coreTracing.createSpanFunction(args);
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Defines the default token refresh buffer duration.
+ */
+const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
+/**
+ * Provides an {@link AccessTokenCache} implementation which clears
+ * the cached {@link AccessToken}'s after the expiresOnTimestamp has
+ * passed.
+ *
+ * @deprecated No longer used in the bearer authorization policy.
+ */
+class ExpiringAccessTokenCache {
+    /**
+     * Constructs an instance of {@link ExpiringAccessTokenCache} with
+     * an optional expiration buffer time.
+     */
+    constructor(tokenRefreshBufferMs = TokenRefreshBufferMs) {
+        this.cachedToken = undefined;
+        this.tokenRefreshBufferMs = tokenRefreshBufferMs;
+    }
+    setCachedToken(accessToken) {
+        this.cachedToken = accessToken;
+    }
+    getCachedToken() {
+        if (this.cachedToken &&
+            Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
+            this.cachedToken = undefined;
+        }
+        return this.cachedToken;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
+ *
+ * @deprecated No longer used in the bearer authorization policy.
+ */
+class AccessTokenRefresher {
+    constructor(credential, scopes, requiredMillisecondsBeforeNewRefresh = 30000) {
+        this.credential = credential;
+        this.scopes = scopes;
+        this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
+        this.lastCalled = 0;
+    }
+    /**
+     * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
+     * that we are ready for a new refresh.
+     */
+    isReady() {
+        // We're only ready for a new refresh if the required milliseconds have passed.
+        return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
+    }
+    /**
+     * Stores the time in which it is called,
+     * then requests a new token,
+     * then sets this.promise to undefined,
+     * then returns the token.
+     */
+    async getToken(options) {
+        this.lastCalled = Date.now();
+        const token = await this.credential.getToken(this.scopes, options);
+        this.promise = undefined;
+        return token || undefined;
+    }
+    /**
+     * Requests a new token if we're not currently waiting for a new token.
+     * Returns null if the required time between each call hasn't been reached.
+     */
+    refresh(options) {
+        if (!this.promise) {
+            this.promise = this.getToken(options);
+        }
+        return this.promise;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+const HeaderConstants = Constants.HeaderConstants;
+const DEFAULT_AUTHORIZATION_SCHEME = "Basic";
+class BasicAuthenticationCredentials {
     /**
      * Creates a new BasicAuthenticationCredentials object.
      *
-     * @constructor
-     * @param {string} userName User name.
-     * @param {string} password Password.
-     * @param {string} [authorizationScheme] The authorization scheme.
+     * @param userName - User name.
+     * @param password - Password.
+     * @param authorizationScheme - The authorization scheme.
      */
-    function BasicAuthenticationCredentials(userName, password, authorizationScheme) {
-        if (authorizationScheme === void 0) { authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME; }
+    constructor(userName, password, authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME) {
         this.authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME;
         if (userName === null || userName === undefined || typeof userName.valueOf() !== "string") {
             throw new Error("userName cannot be null or undefined and must be of type string.");
@@ -55939,32 +58501,30 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
     /**
      * Signs a request with the Authentication header.
      *
-     * @param {WebResourceLike} webResource The WebResourceLike to be signed.
-     * @returns {Promise<WebResourceLike>} The signed request object.
+     * @param webResource - The WebResourceLike to be signed.
+     * @returns The signed request object.
      */
-    BasicAuthenticationCredentials.prototype.signRequest = function (webResource) {
-        var credentials = this.userName + ":" + this.password;
-        var encodedCredentials = this.authorizationScheme + " " + encodeString(credentials);
+    signRequest(webResource) {
+        const credentials = `${this.userName}:${this.password}`;
+        const encodedCredentials = `${this.authorizationScheme} ${encodeString(credentials)}`;
         if (!webResource.headers)
             webResource.headers = new HttpHeaders();
         webResource.headers.set(HeaderConstants.AUTHORIZATION, encodedCredentials);
         return Promise.resolve(webResource);
-    };
-    return BasicAuthenticationCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Authenticates to a service using an API key.
  */
-var ApiKeyCredentials = /** @class */ (function () {
+class ApiKeyCredentials {
     /**
-     * @constructor
-     * @param {object} options   Specifies the options to be provided for auth. Either header or query needs to be provided.
+     * @param options - Specifies the options to be provided for auth. Either header or query needs to be provided.
      */
-    function ApiKeyCredentials(options) {
+    constructor(options) {
         if (!options || (options && !options.inHeader && !options.inQuery)) {
-            throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
+            throw new Error(`options cannot be null or undefined. Either "inHeader" or "inQuery" property of the options object needs to be provided.`);
         }
         this.inHeader = options.inHeader;
         this.inQuery = options.inQuery;
@@ -55972,64 +58532,58 @@ var ApiKeyCredentials = /** @class */ (function () {
     /**
      * Signs a request with the values provided in the inHeader and inQuery parameter.
      *
-     * @param {WebResourceLike} webResource The WebResourceLike to be signed.
-     * @returns {Promise<WebResourceLike>} The signed request object.
+     * @param webResource - The WebResourceLike to be signed.
+     * @returns The signed request object.
      */
-    ApiKeyCredentials.prototype.signRequest = function (webResource) {
+    signRequest(webResource) {
         if (!webResource) {
-            return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
+            return Promise.reject(new Error(`webResource cannot be null or undefined and must be of type "object".`));
         }
         if (this.inHeader) {
             if (!webResource.headers) {
                 webResource.headers = new HttpHeaders();
             }
-            for (var headerName in this.inHeader) {
+            for (const headerName in this.inHeader) {
                 webResource.headers.set(headerName, this.inHeader[headerName]);
             }
         }
         if (this.inQuery) {
             if (!webResource.url) {
-                return Promise.reject(new Error("url cannot be null in the request object."));
+                return Promise.reject(new Error(`url cannot be null in the request object.`));
             }
             if (webResource.url.indexOf("?") < 0) {
                 webResource.url += "?";
             }
-            for (var key in this.inQuery) {
+            for (const key in this.inQuery) {
                 if (!webResource.url.endsWith("?")) {
                     webResource.url += "&";
                 }
-                webResource.url += key + "=" + this.inQuery[key];
+                webResource.url += `${key}=${this.inQuery[key]}`;
             }
         }
         return Promise.resolve(webResource);
-    };
-    return ApiKeyCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var TopicCredentials = /** @class */ (function (_super) {
-    tslib.__extends(TopicCredentials, _super);
+class TopicCredentials extends ApiKeyCredentials {
     /**
      * Creates a new EventGrid TopicCredentials object.
      *
-     * @constructor
-     * @param {string} topicKey   The EventGrid topic key
+     * @param topicKey - The EventGrid topic key
      */
-    function TopicCredentials(topicKey) {
-        var _this = this;
+    constructor(topicKey) {
         if (!topicKey || (topicKey && typeof topicKey !== "string")) {
             throw new Error("topicKey cannot be null or undefined and must be of type string.");
         }
-        var options = {
+        const options = {
             inHeader: {
                 "aeg-sas-key": topicKey
             }
         };
-        _this = _super.call(this, options) || this;
-        return _this;
+        super(options);
     }
-    return TopicCredentials;
-}(ApiKeyCredentials));
+}
 
 Object.defineProperty(exports, 'isTokenCredential', {
     enumerable: true,
@@ -56054,9 +58608,12 @@ exports.TopicCredentials = TopicCredentials;
 exports.URLBuilder = URLBuilder;
 exports.URLQuery = URLQuery;
 exports.WebResource = WebResource;
+exports.XML_ATTRKEY = XML_ATTRKEY;
+exports.XML_CHARKEY = XML_CHARKEY;
 exports.applyMixins = applyMixins;
 exports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy;
 exports.createPipelineFromOptions = createPipelineFromOptions;
+exports.createSpanFunction = createSpanFunction;
 exports.delay = delay;
 exports.deserializationPolicy = deserializationPolicy;
 exports.deserializeResponseBody = deserializeResponseBody;
diff --git a/dist/save/index.js b/dist/save/index.js
index 1d3b077..56e1b39 100644
--- a/dist/save/index.js
+++ b/dist/save/index.js
@@ -48,6 +48,25 @@ module.exports =
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -58,11 +77,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-const childProcess = __webpack_require__(129);
-const path = __webpack_require__(622);
+exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
+const assert_1 = __webpack_require__(357);
+const childProcess = __importStar(__webpack_require__(129));
+const path = __importStar(__webpack_require__(622));
 const util_1 = __webpack_require__(669);
-const ioUtil = __webpack_require__(672);
+const ioUtil = __importStar(__webpack_require__(672));
 const exec = util_1.promisify(childProcess.exec);
+const execFile = util_1.promisify(childProcess.execFile);
 /**
  * Copies a file or folder.
  * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
@@ -73,14 +95,14 @@ const exec = util_1.promisify(childProcess.exec);
  */
 function cp(source, dest, options = {}) {
     return __awaiter(this, void 0, void 0, function* () {
-        const { force, recursive } = readCopyOptions(options);
+        const { force, recursive, copySourceDirectory } = readCopyOptions(options);
         const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
         // Dest is an existing file, but not forcing
         if (destStat && destStat.isFile() && !force) {
             return;
         }
         // If dest is an existing directory, should copy inside.
-        const newDest = destStat && destStat.isDirectory()
+        const newDest = destStat && destStat.isDirectory() && copySourceDirectory
             ? path.join(dest, path.basename(source))
             : dest;
         if (!(yield ioUtil.exists(source))) {
@@ -145,12 +167,22 @@ function rmRF(inputPath) {
         if (ioUtil.IS_WINDOWS) {
             // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
             // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
+            // Check for invalid characters
+            // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
+            if (/[*"<>|]/.test(inputPath)) {
+                throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
+            }
             try {
+                const cmdPath = ioUtil.getCmdPath();
                 if (yield ioUtil.isDirectory(inputPath, true)) {
-                    yield exec(`rd /s /q "${inputPath}"`);
+                    yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, {
+                        env: { inputPath }
+                    });
                 }
                 else {
-                    yield exec(`del /f /a "${inputPath}"`);
+                    yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
+                        env: { inputPath }
+                    });
                 }
             }
             catch (err) {
@@ -183,7 +215,7 @@ function rmRF(inputPath) {
                 return;
             }
             if (isDir) {
-                yield exec(`rm -rf "${inputPath}"`);
+                yield execFile(`rm`, [`-rf`, `${inputPath}`]);
             }
             else {
                 yield ioUtil.unlink(inputPath);
@@ -201,7 +233,8 @@ exports.rmRF = rmRF;
  */
 function mkdirP(fsPath) {
     return __awaiter(this, void 0, void 0, function* () {
-        yield ioUtil.mkdirP(fsPath);
+        assert_1.ok(fsPath, 'a path argument must be provided');
+        yield ioUtil.mkdir(fsPath, { recursive: true });
     });
 }
 exports.mkdirP = mkdirP;
@@ -229,62 +262,80 @@ function which(tool, check) {
                     throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
                 }
             }
+            return result;
         }
-        try {
-            // build the list of extensions to try
-            const extensions = [];
-            if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
-                for (const extension of process.env.PATHEXT.split(path.delimiter)) {
-                    if (extension) {
-                        extensions.push(extension);
-                    }
-                }
-            }
-            // if it's rooted, return it if exists. otherwise return empty.
-            if (ioUtil.isRooted(tool)) {
-                const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
-                if (filePath) {
-                    return filePath;
-                }
-                return '';
-            }
-            // if any path separators, return empty
-            if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
-                return '';
-            }
-            // build the list of directories
-            //
-            // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
-            // it feels like we should not do this. Checking the current directory seems like more of a use
-            // case of a shell, and the which() function exposed by the toolkit should strive for consistency
-            // across platforms.
-            const directories = [];
-            if (process.env.PATH) {
-                for (const p of process.env.PATH.split(path.delimiter)) {
-                    if (p) {
-                        directories.push(p);
-                    }
-                }
-            }
-            // return the first match
-            for (const directory of directories) {
-                const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
-                if (filePath) {
-                    return filePath;
-                }
-            }
-            return '';
-        }
-        catch (err) {
-            throw new Error(`which failed with message ${err.message}`);
+        const matches = yield findInPath(tool);
+        if (matches && matches.length > 0) {
+            return matches[0];
         }
+        return '';
     });
 }
 exports.which = which;
+/**
+ * Returns a list of all occurrences of the given tool on the system path.
+ *
+ * @returns   Promise<string[]>  the paths of the tool
+ */
+function findInPath(tool) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!tool) {
+            throw new Error("parameter 'tool' is required");
+        }
+        // build the list of extensions to try
+        const extensions = [];
+        if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {
+            for (const extension of process.env['PATHEXT'].split(path.delimiter)) {
+                if (extension) {
+                    extensions.push(extension);
+                }
+            }
+        }
+        // if it's rooted, return it if exists. otherwise return empty.
+        if (ioUtil.isRooted(tool)) {
+            const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
+            if (filePath) {
+                return [filePath];
+            }
+            return [];
+        }
+        // if any path separators, return empty
+        if (tool.includes(path.sep)) {
+            return [];
+        }
+        // build the list of directories
+        //
+        // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
+        // it feels like we should not do this. Checking the current directory seems like more of a use
+        // case of a shell, and the which() function exposed by the toolkit should strive for consistency
+        // across platforms.
+        const directories = [];
+        if (process.env.PATH) {
+            for (const p of process.env.PATH.split(path.delimiter)) {
+                if (p) {
+                    directories.push(p);
+                }
+            }
+        }
+        // find all matches
+        const matches = [];
+        for (const directory of directories) {
+            const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);
+            if (filePath) {
+                matches.push(filePath);
+            }
+        }
+        return matches;
+    });
+}
+exports.findInPath = findInPath;
 function readCopyOptions(options) {
     const force = options.force == null ? true : options.force;
     const recursive = Boolean(options.recursive);
-    return { force, recursive };
+    const copySourceDirectory = options.copySourceDirectory == null
+        ? true
+        : Boolean(options.copySourceDirectory);
+    return { force, recursive, copySourceDirectory };
 }
 function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
     return __awaiter(this, void 0, void 0, function* () {
@@ -339,42 +390,7 @@ function copyFile(srcFile, destFile, force) {
 //# sourceMappingURL=io.js.map
 
 /***/ }),
-/* 2 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defaultGetter = void 0;
-/**
- * Default getter which just does a simple property access. Returns
- * undefined if the key is not set.
- *
- * @param carrier
- * @param key
- */
-function defaultGetter(carrier, key) {
-    return carrier[key];
-}
-exports.defaultGetter = defaultGetter;
-//# sourceMappingURL=getter.js.map
-
-/***/ }),
+/* 2 */,
 /* 3 */,
 /* 4 */,
 /* 5 */,
@@ -386,6 +402,25 @@ exports.defaultGetter = defaultGetter;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -395,20 +430,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.argStringToArray = exports.ToolRunner = void 0;
 const os = __importStar(__webpack_require__(87));
 const events = __importStar(__webpack_require__(614));
 const child = __importStar(__webpack_require__(129));
 const path = __importStar(__webpack_require__(622));
 const io = __importStar(__webpack_require__(1));
 const ioUtil = __importStar(__webpack_require__(672));
+const timers_1 = __webpack_require__(213);
 /* eslint-disable @typescript-eslint/unbound-method */
 const IS_WINDOWS = process.platform === 'win32';
 /*
@@ -478,11 +508,12 @@ class ToolRunner extends events.EventEmitter {
                 s = s.substring(n + os.EOL.length);
                 n = s.indexOf(os.EOL);
             }
-            strBuffer = s;
+            return s;
         }
         catch (err) {
             // streaming lines to console is best effort.  Don't fail a build.
             this._debug(`error processing line. Failed with error ${err}`);
+            return '';
         }
     }
     _getSpawnFileName() {
@@ -764,7 +795,7 @@ class ToolRunner extends events.EventEmitter {
             // if the tool is only a file name, then resolve it from the PATH
             // otherwise verify it exists (add extension on Windows if necessary)
             this.toolPath = yield io.which(this.toolPath, true);
-            return new Promise((resolve, reject) => {
+            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
                 this._debug(`exec tool: ${this.toolPath}`);
                 this._debug('arguments:');
                 for (const arg of this.args) {
@@ -778,9 +809,12 @@ class ToolRunner extends events.EventEmitter {
                 state.on('debug', (message) => {
                     this._debug(message);
                 });
+                if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {
+                    return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));
+                }
                 const fileName = this._getSpawnFileName();
                 const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
-                const stdbuffer = '';
+                let stdbuffer = '';
                 if (cp.stdout) {
                     cp.stdout.on('data', (data) => {
                         if (this.options.listeners && this.options.listeners.stdout) {
@@ -789,14 +823,14 @@ class ToolRunner extends events.EventEmitter {
                         if (!optionsNonNull.silent && optionsNonNull.outStream) {
                             optionsNonNull.outStream.write(data);
                         }
-                        this._processLineBuffer(data, stdbuffer, (line) => {
+                        stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {
                             if (this.options.listeners && this.options.listeners.stdline) {
                                 this.options.listeners.stdline(line);
                             }
                         });
                     });
                 }
-                const errbuffer = '';
+                let errbuffer = '';
                 if (cp.stderr) {
                     cp.stderr.on('data', (data) => {
                         state.processStderr = true;
@@ -811,7 +845,7 @@ class ToolRunner extends events.EventEmitter {
                                 : optionsNonNull.outStream;
                             s.write(data);
                         }
-                        this._processLineBuffer(data, errbuffer, (line) => {
+                        errbuffer = this._processLineBuffer(data, errbuffer, (line) => {
                             if (this.options.listeners && this.options.listeners.errline) {
                                 this.options.listeners.errline(line);
                             }
@@ -858,7 +892,7 @@ class ToolRunner extends events.EventEmitter {
                     }
                     cp.stdin.end(this.options.input);
                 }
-            });
+            }));
         });
     }
 }
@@ -944,7 +978,7 @@ class ExecState extends events.EventEmitter {
             this._setResult();
         }
         else if (this.processExited) {
-            this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
+            this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);
         }
     }
     _debug(message) {
@@ -1058,10 +1092,10 @@ function createTempDirectory() {
     });
 }
 exports.createTempDirectory = createTempDirectory;
-function getArchiveFileSizeIsBytes(filePath) {
+function getArchiveFileSizeInBytes(filePath) {
     return fs.statSync(filePath).size;
 }
-exports.getArchiveFileSizeIsBytes = getArchiveFileSizeIsBytes;
+exports.getArchiveFileSizeInBytes = getArchiveFileSizeInBytes;
 function resolvePaths(patterns) {
     var e_1, _a;
     var _b;
@@ -1074,7 +1108,9 @@ function resolvePaths(patterns) {
         try {
             for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) {
                 const file = _d.value;
-                const relativeFile = path.relative(workspace, file);
+                const relativeFile = path
+                    .relative(workspace, file)
+                    .replace(new RegExp(`\\${path.sep}`, 'g'), '/');
                 core.debug(`Matched: ${relativeFile}`);
                 // Paths are made relative so the tar entries are all relative to the root of the workspace.
                 paths.push(`${relativeFile}`);
@@ -1262,18 +1298,24 @@ eval("require")("encoding");
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.PropagationAPI = void 0;
-var getter_1 = __webpack_require__(2);
-var NoopHttpTextPropagator_1 = __webpack_require__(744);
-var setter_1 = __webpack_require__(753);
-var context_1 = __webpack_require__(492);
-var global_utils_1 = __webpack_require__(976);
-var contextApi = context_1.ContextAPI.getInstance();
+var global_utils_1 = __webpack_require__(525);
+var NoopTextMapPropagator_1 = __webpack_require__(918);
+var TextMapPropagator_1 = __webpack_require__(881);
+var context_helpers_1 = __webpack_require__(483);
+var utils_1 = __webpack_require__(112);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'propagation';
+var NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Propagation API
  */
 var PropagationAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function PropagationAPI() {
+        this.createBaggage = utils_1.createBaggage;
+        this.getBaggage = context_helpers_1.getBaggage;
+        this.setBaggage = context_helpers_1.setBaggage;
+        this.deleteBaggage = context_helpers_1.deleteBaggage;
     }
     /** Get the singleton instance of the Propagator API */
     PropagationAPI.getInstance = function () {
@@ -1283,47 +1325,47 @@ var PropagationAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current propagator. Returns the initialized propagator
+     * Set the current propagator.
+     *
+     * @returns true if the propagator was successfully registered, else false
      */
     PropagationAPI.prototype.setGlobalPropagator = function (propagator) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY]) {
-            // global propagator has already been set
-            return this._getGlobalPropagator();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, propagator, NoopHttpTextPropagator_1.NOOP_HTTP_TEXT_PROPAGATOR);
-        return propagator;
+        return global_utils_1.registerGlobal(API_NAME, propagator, diag_1.DiagAPI.instance());
     };
     /**
      * Inject context into a carrier to be propagated inter-process
      *
+     * @param context Context carrying tracing data to inject
      * @param carrier carrier to inject context into
      * @param setter Function used to set values on the carrier
-     * @param context Context carrying tracing data to inject. Defaults to the currently active context.
      */
-    PropagationAPI.prototype.inject = function (carrier, setter, context) {
-        if (setter === void 0) { setter = setter_1.defaultSetter; }
-        if (context === void 0) { context = contextApi.active(); }
+    PropagationAPI.prototype.inject = function (context, carrier, setter) {
+        if (setter === void 0) { setter = TextMapPropagator_1.defaultTextMapSetter; }
         return this._getGlobalPropagator().inject(context, carrier, setter);
     };
     /**
      * Extract context from a carrier
      *
+     * @param context Context which the newly created context will inherit from
      * @param carrier Carrier to extract context from
      * @param getter Function used to extract keys from a carrier
-     * @param context Context which the newly created context will inherit from. Defaults to the currently active context.
      */
-    PropagationAPI.prototype.extract = function (carrier, getter, context) {
-        if (getter === void 0) { getter = getter_1.defaultGetter; }
-        if (context === void 0) { context = contextApi.active(); }
+    PropagationAPI.prototype.extract = function (context, carrier, getter) {
+        if (getter === void 0) { getter = TextMapPropagator_1.defaultTextMapGetter; }
         return this._getGlobalPropagator().extract(context, carrier, getter);
     };
+    /**
+     * Return a list of all fields which may be used by the propagator.
+     */
+    PropagationAPI.prototype.fields = function () {
+        return this._getGlobalPropagator().fields();
+    };
     /** Remove the global propagator */
     PropagationAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     PropagationAPI.prototype._getGlobalPropagator = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_PROPAGATION_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopHttpTextPropagator_1.NOOP_HTTP_TEXT_PROPAGATOR);
+        return global_utils_1.getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;
     };
     return PropagationAPI;
 }());
@@ -1354,94 +1396,17 @@ exports.default = _default;
 /* 30 */,
 /* 31 */,
 /* 32 */,
-/* 33 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=HttpTextPropagator.js.map
-
-/***/ }),
+/* 33 */,
 /* 34 */,
 /* 35 */,
 /* 36 */,
 /* 37 */,
 /* 38 */,
 /* 39 */,
-/* 40 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.EntryTtl = void 0;
-/**
- * EntryTtl is an integer that represents number of hops an entry can propagate.
- *
- * For now, ONLY special values (0 and -1) are supported.
- */
-var EntryTtl;
-(function (EntryTtl) {
-    /**
-     * NO_PROPAGATION is considered to have local context and is used within the
-     * process it created.
-     */
-    EntryTtl[EntryTtl["NO_PROPAGATION"] = 0] = "NO_PROPAGATION";
-    /** UNLIMITED_PROPAGATION can propagate unlimited hops. */
-    EntryTtl[EntryTtl["UNLIMITED_PROPAGATION"] = -1] = "UNLIMITED_PROPAGATION";
-})(EntryTtl = exports.EntryTtl || (exports.EntryTtl = {}));
-//# sourceMappingURL=EntryValue.js.map
-
-/***/ }),
+/* 40 */,
 /* 41 */,
 /* 42 */,
-/* 43 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ValueType = void 0;
-/** The Type of value. It describes how the data is reported. */
-var ValueType;
-(function (ValueType) {
-    ValueType[ValueType["INT"] = 0] = "INT";
-    ValueType[ValueType["DOUBLE"] = 1] = "DOUBLE";
-})(ValueType = exports.ValueType || (exports.ValueType = {}));
-//# sourceMappingURL=Metric.js.map
-
-/***/ }),
+/* 43 */,
 /* 44 */,
 /* 45 */,
 /* 46 */,
@@ -1491,12 +1456,21 @@ module.exports = ["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad
 /* 68 */,
 /* 69 */,
 /* 70 */
-/***/ (function(__unusedmodule, exports) {
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=trace_state.js.map
+
+exports.URL = __webpack_require__(782).interface;
+exports.serializeURL = __webpack_require__(936).serializeURL;
+exports.serializeURLOrigin = __webpack_require__(936).serializeURLOrigin;
+exports.basicURLParse = __webpack_require__(936).basicURLParse;
+exports.setTheUsername = __webpack_require__(936).setTheUsername;
+exports.setThePassword = __webpack_require__(936).setThePassword;
+exports.serializeHost = __webpack_require__(936).serializeHost;
+exports.serializeInteger = __webpack_require__(936).serializeInteger;
+exports.parseURL = __webpack_require__(936).parseURL;
+
 
 /***/ }),
 /* 71 */
@@ -1528,6 +1502,7 @@ if (typeof Symbol === undefined || !Symbol.asyncIterator) {
 // We use any as a valid input type
 /* eslint-disable @typescript-eslint/no-explicit-any */
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.toCommandProperties = exports.toCommandValue = void 0;
 /**
  * Sanitizes an input into a string so it can be passed into issueCommand safely
  * @param input input to sanitize into a string
@@ -1542,6 +1517,26 @@ function toCommandValue(input) {
     return JSON.stringify(input);
 }
 exports.toCommandValue = toCommandValue;
+/**
+ *
+ * @param annotationProperties
+ * @returns The command properties to send with the actual annotation command
+ * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
+ */
+function toCommandProperties(annotationProperties) {
+    if (!Object.keys(annotationProperties).length) {
+        return {};
+    }
+    return {
+        title: annotationProperties.title,
+        file: annotationProperties.file,
+        line: annotationProperties.startLine,
+        endLine: annotationProperties.endLine,
+        col: annotationProperties.startColumn,
+        endColumn: annotationProperties.endColumn
+    };
+}
+exports.toCommandProperties = toCommandProperties;
 //# sourceMappingURL=utils.js.map
 
 /***/ }),
@@ -2759,14 +2754,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
 "use strict";
 
 // For internal use, subject to change.
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
     return result;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.issueCommand = void 0;
 // We use any as a valid input type
 /* eslint-disable @typescript-eslint/no-explicit-any */
 const fs = __importStar(__webpack_require__(747));
@@ -2825,8 +2833,10 @@ exports.default = _default;
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(422);
+var tslib = __webpack_require__(640);
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 var listenersMap = new WeakMap();
 var abortedMap = new WeakMap();
 /**
@@ -2837,19 +2847,15 @@ var abortedMap = new WeakMap();
  * cannot or will not ever be cancelled.
  *
  * @example
- * // Abort without timeout
+ * Abort without timeout
+ * ```ts
  * await doAsyncWork(AbortSignal.none);
- *
- * @export
- * @class AbortSignal
- * @implements {AbortSignalLike}
+ * ```
  */
 var AbortSignal = /** @class */ (function () {
     function AbortSignal() {
         /**
          * onabort event listener.
-         *
-         * @memberof AbortSignal
          */
         this.onabort = null;
         listenersMap.set(this, []);
@@ -2860,8 +2866,6 @@ var AbortSignal = /** @class */ (function () {
          * Status of whether aborted or not.
          *
          * @readonly
-         * @type {boolean}
-         * @memberof AbortSignal
          */
         get: function () {
             if (!abortedMap.has(this)) {
@@ -2869,7 +2873,7 @@ var AbortSignal = /** @class */ (function () {
             }
             return abortedMap.get(this);
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     Object.defineProperty(AbortSignal, "none", {
@@ -2877,22 +2881,18 @@ var AbortSignal = /** @class */ (function () {
          * Creates a new AbortSignal instance that will never be aborted.
          *
          * @readonly
-         * @static
-         * @type {AbortSignal}
-         * @memberof AbortSignal
          */
         get: function () {
             return new AbortSignal();
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     /**
      * Added new "abort" event listener, only support "abort" event.
      *
-     * @param {"abort"} _type Only support "abort" event
-     * @param {(this: AbortSignalLike, ev: any) => any} listener
-     * @memberof AbortSignal
+     * @param _type - Only support "abort" event
+     * @param listener - The listener to be added
      */
     AbortSignal.prototype.addEventListener = function (
     // tslint:disable-next-line:variable-name
@@ -2906,9 +2906,8 @@ var AbortSignal = /** @class */ (function () {
     /**
      * Remove "abort" event listener, only support "abort" event.
      *
-     * @param {"abort"} _type Only support "abort" event
-     * @param {(this: AbortSignalLike, ev: any) => any} listener
-     * @memberof AbortSignal
+     * @param _type - Only support "abort" event
+     * @param listener - The listener to be removed
      */
     AbortSignal.prototype.removeEventListener = function (
     // tslint:disable-next-line:variable-name
@@ -2937,9 +2936,9 @@ var AbortSignal = /** @class */ (function () {
  * - If there is a timeout, the timer will be cancelled.
  * - If aborted is true, nothing will happen.
  *
- * @returns
  * @internal
  */
+// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters
 function abortSignal(signal) {
     if (signal.aborted) {
         return;
@@ -2949,19 +2948,24 @@ function abortSignal(signal) {
     }
     var listeners = listenersMap.get(signal);
     if (listeners) {
-        listeners.forEach(function (listener) {
+        // Create a copy of listeners so mutations to the array
+        // (e.g. via removeListener calls) don't affect the listeners
+        // we invoke.
+        listeners.slice().forEach(function (listener) {
             listener.call(signal, { type: "abort" });
         });
     }
     abortedMap.set(signal, true);
 }
 
+// Copyright (c) Microsoft Corporation.
 /**
  * This error is thrown when an asynchronous operation has been aborted.
  * Check for this error by testing the `name` that the name property of the
  * error matches `"AbortError"`.
  *
  * @example
+ * ```ts
  * const controller = new AbortController();
  * controller.abort();
  * try {
@@ -2971,6 +2975,7 @@ function abortSignal(signal) {
  *     // handle abort error here.
  *   }
  * }
+ * ```
  */
 var AbortError = /** @class */ (function (_super) {
     tslib.__extends(AbortError, _super);
@@ -2986,34 +2991,37 @@ var AbortError = /** @class */ (function (_super) {
  * that an asynchronous operation should be aborted.
  *
  * @example
- * // Abort an operation when another event fires
+ * Abort an operation when another event fires
+ * ```ts
  * const controller = new AbortController();
  * const signal = controller.signal;
  * doAsyncWork(signal);
  * button.addEventListener('click', () => controller.abort());
+ * ```
  *
  * @example
- * // Share aborter cross multiple operations in 30s
+ * Share aborter cross multiple operations in 30s
+ * ```ts
  * // Upload the same data to 2 different data centers at the same time,
  * // abort another when any of them is finished
  * const controller = AbortController.withTimeout(30 * 1000);
  * doAsyncWork(controller.signal).then(controller.abort);
  * doAsyncWork(controller.signal).then(controller.abort);
+ *```
  *
  * @example
- * // Cascaded aborting
+ * Cascaded aborting
+ * ```ts
  * // All operations can't take more than 30 seconds
  * const aborter = Aborter.timeout(30 * 1000);
  *
  * // Following 2 operations can't take more than 25 seconds
  * await doAsyncWork(aborter.withTimeout(25 * 1000));
  * await doAsyncWork(aborter.withTimeout(25 * 1000));
- *
- * @export
- * @class AbortController
- * @implements {AbortSignalLike}
+ * ```
  */
 var AbortController = /** @class */ (function () {
+    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
     function AbortController(parentSignals) {
         var _this = this;
         this._signal = new AbortSignal();
@@ -3022,6 +3030,7 @@ var AbortController = /** @class */ (function () {
         }
         // coerce parentSignals into an array
         if (!Array.isArray(parentSignals)) {
+            // eslint-disable-next-line prefer-rest-params
             parentSignals = arguments;
         }
         for (var _i = 0, parentSignals_1 = parentSignals; _i < parentSignals_1.length; _i++) {
@@ -3045,30 +3054,23 @@ var AbortController = /** @class */ (function () {
          * when the abort method is called on this controller.
          *
          * @readonly
-         * @type {AbortSignal}
-         * @memberof AbortController
          */
         get: function () {
             return this._signal;
         },
-        enumerable: true,
+        enumerable: false,
         configurable: true
     });
     /**
      * Signal that any operations passed this controller's associated abort signal
      * to cancel any remaining work and throw an `AbortError`.
-     *
-     * @memberof AbortController
      */
     AbortController.prototype.abort = function () {
         abortSignal(this._signal);
     };
     /**
      * Creates a new AbortSignal instance that will abort after the provided ms.
-     *
-     * @static
-     * @params {number} ms Elapsed time in milliseconds to trigger an abort.
-     * @returns {AbortSignal}
+     * @param ms - Elapsed time in milliseconds to trigger an abort.
      */
     AbortController.timeout = function (ms) {
         var signal = new AbortSignal();
@@ -3089,8 +3091,13 @@ exports.AbortSignal = AbortSignal;
 
 
 /***/ }),
-/* 107 */
-/***/ (function(__unusedmodule, exports) {
+/* 107 */,
+/* 108 */,
+/* 109 */,
+/* 110 */,
+/* 111 */,
+/* 112 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
@@ -3110,14 +3117,43 @@ exports.AbortSignal = AbortSignal;
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Observation.js.map
+exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
+var diag_1 = __webpack_require__(118);
+var baggage_impl_1 = __webpack_require__(666);
+var symbol_1 = __webpack_require__(561);
+var diag = diag_1.DiagAPI.instance();
+/**
+ * Create a new Baggage with optional entries
+ *
+ * @param entries An array of baggage entries the new baggage should contain
+ */
+function createBaggage(entries) {
+    if (entries === void 0) { entries = {}; }
+    return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));
+}
+exports.createBaggage = createBaggage;
+/**
+ * Create a serializable BaggageEntryMetadata object from a string.
+ *
+ * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
+ *
+ */
+function baggageEntryMetadataFromString(str) {
+    if (typeof str !== 'string') {
+        diag.error("Cannot create baggage metadata from unknown type: " + typeof str);
+        str = '';
+    }
+    return {
+        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
+        toString: function () {
+            return str;
+        },
+    };
+}
+exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
+//# sourceMappingURL=utils.js.map
 
 /***/ }),
-/* 108 */,
-/* 109 */,
-/* 110 */,
-/* 111 */,
-/* 112 */,
 /* 113 */,
 /* 114 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -3278,7 +3314,7 @@ function uploadChunk(httpClient, resourceUrl, openStream, start, end) {
 function uploadFile(httpClient, cacheId, archivePath, options) {
     return __awaiter(this, void 0, void 0, function* () {
         // Upload Chunks
-        const fileSize = fs.statSync(archivePath).size;
+        const fileSize = utils.getArchiveFileSizeInBytes(archivePath);
         const resourceUrl = getCacheApiUrl(`caches/${cacheId.toString()}`);
         const fd = fs.openSync(archivePath, 'r');
         const uploadOptions = options_1.getUploadOptions(options);
@@ -3328,7 +3364,8 @@ function saveCache(cacheId, archivePath, options) {
         yield uploadFile(httpClient, cacheId, archivePath, options);
         // Commit Cache
         core.debug('Commiting cache');
-        const cacheSize = utils.getArchiveFileSizeIsBytes(archivePath);
+        const cacheSize = utils.getArchiveFileSizeInBytes(archivePath);
+        core.info(`Cache Size: ~${Math.round(cacheSize / (1024 * 1024))} MB (${cacheSize} B)`);
         const commitCacheResponse = yield commitCache(httpClient, cacheId, cacheSize);
         if (!requestUtils_1.isSuccessStatusCode(commitCacheResponse.statusCode)) {
             throw new Error(`Cache service responded with ${commitCacheResponse.statusCode} during commit cache.`);
@@ -3343,30 +3380,7 @@ exports.saveCache = saveCache;
 /* 115 */,
 /* 116 */,
 /* 117 */,
-/* 118 */,
-/* 119 */,
-/* 120 */,
-/* 121 */,
-/* 122 */,
-/* 123 */,
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
-/* 129 */
-/***/ (function(module) {
-
-module.exports = require("child_process");
-
-/***/ }),
-/* 130 */,
-/* 131 */,
-/* 132 */,
-/* 133 */,
-/* 134 */,
-/* 135 */,
-/* 136 */
+/* 118 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
@@ -3387,57 +3401,167 @@ module.exports = require("child_process");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.MetricsAPI = void 0;
-var NoopMeterProvider_1 = __webpack_require__(450);
-var global_utils_1 = __webpack_require__(976);
+exports.DiagAPI = void 0;
+var ComponentLogger_1 = __webpack_require__(362);
+var logLevelLogger_1 = __webpack_require__(673);
+var types_1 = __webpack_require__(545);
+var global_utils_1 = __webpack_require__(525);
+var API_NAME = 'diag';
 /**
- * Singleton object which represents the entry point to the OpenTelemetry Metrics API
+ * Singleton object which represents the entry point to the OpenTelemetry internal
+ * diagnostic API
  */
-var MetricsAPI = /** @class */ (function () {
-    /** Empty private constructor prevents end users from constructing a new instance of the API */
-    function MetricsAPI() {
+var DiagAPI = /** @class */ (function () {
+    /**
+     * Private internal constructor
+     * @private
+     */
+    function DiagAPI() {
+        function _logProxy(funcName) {
+            return function () {
+                var logger = global_utils_1.getGlobal('diag');
+                // shortcut if logger not set
+                if (!logger)
+                    return;
+                return logger[funcName].apply(logger, 
+                // work around Function.prototype.apply types
+                // eslint-disable-next-line @typescript-eslint/no-explicit-any
+                arguments);
+            };
+        }
+        // Using self local variable for minification purposes as 'this' cannot be minified
+        var self = this;
+        // DiagAPI specific functions
+        self.setLogger = function (logger, logLevel) {
+            var _a, _b;
+            if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
+            if (logger === self) {
+                // There isn't much we can do here.
+                // Logging to the console might break the user application.
+                // Try to log to self. If a logger was previously registered it will receive the log.
+                var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
+                self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
+                return false;
+            }
+            var oldLogger = global_utils_1.getGlobal('diag');
+            var newLogger = logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger);
+            // There already is an logger registered. We'll let it know before overwriting it.
+            if (oldLogger) {
+                var stack = (_b = new Error().stack) !== null && _b !== void 0 ? _b : '<failed to generate stacktrace>';
+                oldLogger.warn("Current logger will be overwritten from " + stack);
+                newLogger.warn("Current logger will overwrite one already registered from " + stack);
+            }
+            return global_utils_1.registerGlobal('diag', newLogger, self, true);
+        };
+        self.disable = function () {
+            global_utils_1.unregisterGlobal(API_NAME, self);
+        };
+        self.createComponentLogger = function (options) {
+            return new ComponentLogger_1.DiagComponentLogger(options);
+        };
+        self.verbose = _logProxy('verbose');
+        self.debug = _logProxy('debug');
+        self.info = _logProxy('info');
+        self.warn = _logProxy('warn');
+        self.error = _logProxy('error');
     }
-    /** Get the singleton instance of the Metrics API */
-    MetricsAPI.getInstance = function () {
+    /** Get the singleton instance of the DiagAPI API */
+    DiagAPI.instance = function () {
         if (!this._instance) {
-            this._instance = new MetricsAPI();
+            this._instance = new DiagAPI();
         }
         return this._instance;
     };
-    /**
-     * Set the current global meter. Returns the initialized global meter provider.
-     */
-    MetricsAPI.prototype.setGlobalMeterProvider = function (provider) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY]) {
-            // global meter provider has already been set
-            return this.getMeterProvider();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopMeterProvider_1.NOOP_METER_PROVIDER);
-        return provider;
-    };
-    /**
-     * Returns the global meter provider.
-     */
-    MetricsAPI.prototype.getMeterProvider = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopMeterProvider_1.NOOP_METER_PROVIDER);
-    };
-    /**
-     * Returns a meter from the global meter provider.
-     */
-    MetricsAPI.prototype.getMeter = function (name, version) {
-        return this.getMeterProvider().getMeter(name, version);
-    };
-    /** Remove the global meter provider */
-    MetricsAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_METRICS_API_KEY];
-    };
-    return MetricsAPI;
+    return DiagAPI;
 }());
-exports.MetricsAPI = MetricsAPI;
-//# sourceMappingURL=metrics.js.map
+exports.DiagAPI = DiagAPI;
+//# sourceMappingURL=diag.js.map
 
 /***/ }),
+/* 119 */,
+/* 120 */,
+/* 121 */,
+/* 122 */,
+/* 123 */,
+/* 124 */,
+/* 125 */,
+/* 126 */,
+/* 127 */,
+/* 128 */,
+/* 129 */
+/***/ (function(module) {
+
+module.exports = require("child_process");
+
+/***/ }),
+/* 130 */,
+/* 131 */,
+/* 132 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ROOT_CONTEXT = exports.createContextKey = void 0;
+/** Get a key to uniquely identify a context value */
+function createContextKey(description) {
+    // The specification states that for the same input, multiple calls should
+    // return different keys. Due to the nature of the JS dependency management
+    // system, this creates problems where multiple versions of some package
+    // could hold different keys for the same property.
+    //
+    // Therefore, we use Symbol.for which returns the same key for the same input.
+    return Symbol.for(description);
+}
+exports.createContextKey = createContextKey;
+var BaseContext = /** @class */ (function () {
+    /**
+     * Construct a new context which inherits values from an optional parent context.
+     *
+     * @param parentContext a context from which to inherit values
+     */
+    function BaseContext(parentContext) {
+        // for minification
+        var self = this;
+        self._currentContext = parentContext ? new Map(parentContext) : new Map();
+        self.getValue = function (key) { return self._currentContext.get(key); };
+        self.setValue = function (key, value) {
+            var context = new BaseContext(self._currentContext);
+            context._currentContext.set(key, value);
+            return context;
+        };
+        self.deleteValue = function (key) {
+            var context = new BaseContext(self._currentContext);
+            context._currentContext.delete(key);
+            return context;
+        };
+    }
+    return BaseContext;
+}());
+/** The root context is used as the default parent context when there is no active context */
+exports.ROOT_CONTEXT = new BaseContext();
+//# sourceMappingURL=context.js.map
+
+/***/ }),
+/* 133 */,
+/* 134 */,
+/* 135 */,
+/* 136 */,
 /* 137 */,
 /* 138 */,
 /* 139 */
@@ -3728,304 +3852,7 @@ exports.debug = debug; // for test
 /***/ }),
 /* 142 */,
 /* 143 */,
-/* 144 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 144 */,
 /* 145 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -4088,7 +3915,202 @@ exports.fromPromise = function (fn) {
 
 /***/ }),
 /* 148 */,
-/* 149 */,
+/* 149 */
+/***/ (function(module) {
+
+"use strict";
+
+
+var conversions = {};
+module.exports = conversions;
+
+function sign(x) {
+    return x < 0 ? -1 : 1;
+}
+
+function evenRound(x) {
+    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
+    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
+        return Math.floor(x);
+    } else {
+        return Math.round(x);
+    }
+}
+
+function createNumberConversion(bitLength, typeOpts) {
+    if (!typeOpts.unsigned) {
+        --bitLength;
+    }
+    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
+    const upperBound = Math.pow(2, bitLength) - 1;
+
+    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
+    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
+
+    return function(V, opts) {
+        if (!opts) opts = {};
+
+        let x = +V;
+
+        if (opts.enforceRange) {
+            if (!Number.isFinite(x)) {
+                throw new TypeError("Argument is not a finite number");
+            }
+
+            x = sign(x) * Math.floor(Math.abs(x));
+            if (x < lowerBound || x > upperBound) {
+                throw new TypeError("Argument is not in byte range");
+            }
+
+            return x;
+        }
+
+        if (!isNaN(x) && opts.clamp) {
+            x = evenRound(x);
+
+            if (x < lowerBound) x = lowerBound;
+            if (x > upperBound) x = upperBound;
+            return x;
+        }
+
+        if (!Number.isFinite(x) || x === 0) {
+            return 0;
+        }
+
+        x = sign(x) * Math.floor(Math.abs(x));
+        x = x % moduloVal;
+
+        if (!typeOpts.unsigned && x >= moduloBound) {
+            return x - moduloVal;
+        } else if (typeOpts.unsigned) {
+            if (x < 0) {
+              x += moduloVal;
+            } else if (x === -0) { // don't return negative zero
+              return 0;
+            }
+        }
+
+        return x;
+    }
+}
+
+conversions["void"] = function () {
+    return undefined;
+};
+
+conversions["boolean"] = function (val) {
+    return !!val;
+};
+
+conversions["byte"] = createNumberConversion(8, { unsigned: false });
+conversions["octet"] = createNumberConversion(8, { unsigned: true });
+
+conversions["short"] = createNumberConversion(16, { unsigned: false });
+conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
+
+conversions["long"] = createNumberConversion(32, { unsigned: false });
+conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
+
+conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
+conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
+
+conversions["double"] = function (V) {
+    const x = +V;
+
+    if (!Number.isFinite(x)) {
+        throw new TypeError("Argument is not a finite floating-point value");
+    }
+
+    return x;
+};
+
+conversions["unrestricted double"] = function (V) {
+    const x = +V;
+
+    if (isNaN(x)) {
+        throw new TypeError("Argument is NaN");
+    }
+
+    return x;
+};
+
+// not quite valid, but good enough for JS
+conversions["float"] = conversions["double"];
+conversions["unrestricted float"] = conversions["unrestricted double"];
+
+conversions["DOMString"] = function (V, opts) {
+    if (!opts) opts = {};
+
+    if (opts.treatNullAsEmptyString && V === null) {
+        return "";
+    }
+
+    return String(V);
+};
+
+conversions["ByteString"] = function (V, opts) {
+    const x = String(V);
+    let c = undefined;
+    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
+        if (c > 255) {
+            throw new TypeError("Argument is not a valid bytestring");
+        }
+    }
+
+    return x;
+};
+
+conversions["USVString"] = function (V) {
+    const S = String(V);
+    const n = S.length;
+    const U = [];
+    for (let i = 0; i < n; ++i) {
+        const c = S.charCodeAt(i);
+        if (c < 0xD800 || c > 0xDFFF) {
+            U.push(String.fromCodePoint(c));
+        } else if (0xDC00 <= c && c <= 0xDFFF) {
+            U.push(String.fromCodePoint(0xFFFD));
+        } else {
+            if (i === n - 1) {
+                U.push(String.fromCodePoint(0xFFFD));
+            } else {
+                const d = S.charCodeAt(i + 1);
+                if (0xDC00 <= d && d <= 0xDFFF) {
+                    const a = c & 0x3FF;
+                    const b = d & 0x3FF;
+                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
+                    ++i;
+                } else {
+                    U.push(String.fromCodePoint(0xFFFD));
+                }
+            }
+        }
+    }
+
+    return U.join('');
+};
+
+conversions["Date"] = function (V, opts) {
+    if (!(V instanceof Date)) {
+        throw new TypeError("Argument is not a Date object");
+    }
+    if (isNaN(V)) {
+        return undefined;
+    }
+
+    return V;
+};
+
+conversions["RegExp"] = function (V, opts) {
+    if (!(V instanceof RegExp)) {
+        V = new RegExp(V);
+    }
+
+    return V;
+};
+
+
+/***/ }),
 /* 150 */,
 /* 151 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -4111,31 +4133,66 @@ exports.fromPromise = function (fn) {
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER = exports.NoopTracer = void 0;
-var NoopSpan_1 = __webpack_require__(767);
+exports.NoopTracer = void 0;
+var context_1 = __webpack_require__(492);
+var context_utils_1 = __webpack_require__(720);
+var NonRecordingSpan_1 = __webpack_require__(437);
+var spancontext_utils_1 = __webpack_require__(629);
+var context = context_1.ContextAPI.getInstance();
 /**
  * No-op implementations of {@link Tracer}.
  */
 var NoopTracer = /** @class */ (function () {
     function NoopTracer() {
     }
-    NoopTracer.prototype.getCurrentSpan = function () {
-        return NoopSpan_1.NOOP_SPAN;
-    };
     // startSpan starts a noop span.
-    NoopTracer.prototype.startSpan = function (name, options) {
-        return NoopSpan_1.NOOP_SPAN;
+    NoopTracer.prototype.startSpan = function (name, options, context) {
+        var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
+        if (root) {
+            return new NonRecordingSpan_1.NonRecordingSpan();
+        }
+        var parentFromContext = context && context_utils_1.getSpanContext(context);
+        if (isSpanContext(parentFromContext) &&
+            spancontext_utils_1.isSpanContextValid(parentFromContext)) {
+            return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);
+        }
+        else {
+            return new NonRecordingSpan_1.NonRecordingSpan();
+        }
     };
-    NoopTracer.prototype.withSpan = function (span, fn) {
-        return fn();
-    };
-    NoopTracer.prototype.bind = function (target, span) {
-        return target;
+    NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {
+        var opts;
+        var ctx;
+        var fn;
+        if (arguments.length < 2) {
+            return;
+        }
+        else if (arguments.length === 2) {
+            fn = arg2;
+        }
+        else if (arguments.length === 3) {
+            opts = arg2;
+            fn = arg3;
+        }
+        else {
+            opts = arg2;
+            ctx = arg3;
+            fn = arg4;
+        }
+        var parentContext = ctx !== null && ctx !== void 0 ? ctx : context.active();
+        var span = this.startSpan(name, opts, parentContext);
+        var contextWithSpanSet = context_utils_1.setSpan(parentContext, span);
+        return context.with(contextWithSpanSet, fn, undefined, span);
     };
     return NoopTracer;
 }());
 exports.NoopTracer = NoopTracer;
-exports.NOOP_TRACER = new NoopTracer();
+function isSpanContext(spanContext) {
+    return (typeof spanContext === 'object' &&
+        typeof spanContext['spanId'] === 'string' &&
+        typeof spanContext['traceId'] === 'string' &&
+        typeof spanContext['traceFlags'] === 'number');
+}
 //# sourceMappingURL=NoopTracer.js.map
 
 /***/ }),
@@ -4370,7 +4427,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER_PROVIDER = exports.NoopTracerProvider = void 0;
+exports.NoopTracerProvider = void 0;
 var NoopTracer_1 = __webpack_require__(151);
 /**
  * An implementation of the {@link TracerProvider} which returns an impotent
@@ -4382,41 +4439,17 @@ var NoopTracerProvider = /** @class */ (function () {
     function NoopTracerProvider() {
     }
     NoopTracerProvider.prototype.getTracer = function (_name, _version) {
-        return NoopTracer_1.NOOP_TRACER;
+        return new NoopTracer_1.NoopTracer();
     };
     return NoopTracerProvider;
 }());
 exports.NoopTracerProvider = NoopTracerProvider;
-exports.NOOP_TRACER_PROVIDER = new NoopTracerProvider();
 //# sourceMappingURL=NoopTracerProvider.js.map
 
 /***/ }),
 /* 163 */,
 /* 164 */,
-/* 165 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Plugin.js.map
-
-/***/ }),
+/* 165 */,
 /* 166 */,
 /* 167 */,
 /* 168 */,
@@ -4552,30 +4585,7 @@ exports.default = _default;
 /* 186 */,
 /* 187 */,
 /* 188 */,
-/* 189 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=ObserverResult.js.map
-
-/***/ }),
+/* 189 */,
 /* 190 */,
 /* 191 */,
 /* 192 */,
@@ -4675,7 +4685,30 @@ exports.default = _default;
 /* 204 */,
 /* 205 */,
 /* 206 */,
-/* 207 */,
+/* 207 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=trace_state.js.map
+
+/***/ }),
 /* 208 */,
 /* 209 */,
 /* 210 */
@@ -4706,7 +4739,7 @@ module.exports = require("https");
 /* 213 */
 /***/ (function(module) {
 
-module.exports = require("punycode");
+module.exports = require("timers");
 
 /***/ }),
 /* 214 */,
@@ -4825,49 +4858,191 @@ Object.defineProperty(exports, '__esModule', { value: true });
  * A static-key-based credential that supports updating
  * the underlying key value.
  */
-var AzureKeyCredential = /** @class */ (function () {
+class AzureKeyCredential {
     /**
      * Create an instance of an AzureKeyCredential for use
      * with a service client.
      *
-     * @param key the initial value of the key to use in authentication
+     * @param key - The initial value of the key to use in authentication
      */
-    function AzureKeyCredential(key) {
+    constructor(key) {
         if (!key) {
             throw new Error("key must be a non-empty string");
         }
         this._key = key;
     }
-    Object.defineProperty(AzureKeyCredential.prototype, "key", {
-        /**
-         * The value of the key to be used in authentication
-         */
-        get: function () {
-            return this._key;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The value of the key to be used in authentication
+     */
+    get key() {
+        return this._key;
+    }
     /**
      * Change the value of the key.
      *
      * Updates will take effect upon the next request after
      * updating the key value.
      *
-     * @param newKey the new key value to be used
+     * @param newKey - The new key value to be used
      */
-    AzureKeyCredential.prototype.update = function (newKey) {
+    update(newKey) {
         this._key = newKey;
-    };
-    return AzureKeyCredential;
-}());
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if something is defined or not.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+/**
+ * Helper TypeGuard that checks if the input is an object with the specified properties.
+ * Note: The properties may be inherited.
+ * @param thing - Anything.
+ * @param properties - The name of the properties that should appear in the object.
+ * @internal
+ */
+function isObjectWithProperties(thing, properties) {
+    if (!isDefined(thing) || typeof thing !== "object") {
+        return false;
+    }
+    for (const property of properties) {
+        if (!objectHasProperty(thing, property)) {
+            return false;
+        }
+    }
+    return true;
+}
+/**
+ * Helper TypeGuard that checks if the input is an object with the specified property.
+ * Note: The property may be inherited.
+ * @param thing - Any object.
+ * @param property - The name of the property that should appear in the object.
+ * @internal
+ */
+function objectHasProperty(thing, property) {
+    return typeof thing === "object" && property in thing;
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A static name/key-based credential that supports updating
+ * the underlying name and key values.
+ */
+class AzureNamedKeyCredential {
+    /**
+     * Create an instance of an AzureNamedKeyCredential for use
+     * with a service client.
+     *
+     * @param name - The initial value of the name to use in authentication.
+     * @param key - The initial value of the key to use in authentication.
+     */
+    constructor(name, key) {
+        if (!name || !key) {
+            throw new TypeError("name and key must be non-empty strings");
+        }
+        this._name = name;
+        this._key = key;
+    }
+    /**
+     * The value of the key to be used in authentication.
+     */
+    get key() {
+        return this._key;
+    }
+    /**
+     * The value of the name to be used in authentication.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * Change the value of the key.
+     *
+     * Updates will take effect upon the next request after
+     * updating the key value.
+     *
+     * @param newName - The new name value to be used.
+     * @param newKey - The new key value to be used.
+     */
+    update(newName, newKey) {
+        if (!newName || !newKey) {
+            throw new TypeError("newName and newKey must be non-empty strings");
+        }
+        this._name = newName;
+        this._key = newKey;
+    }
+}
+/**
+ * Tests an object to determine whether it implements NamedKeyCredential.
+ *
+ * @param credential - The assumed NamedKeyCredential to be tested.
+ */
+function isNamedKeyCredential(credential) {
+    return (isObjectWithProperties(credential, ["name", "key"]) &&
+        typeof credential.key === "string" &&
+        typeof credential.name === "string");
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A static-signature-based credential that supports updating
+ * the underlying signature value.
+ */
+class AzureSASCredential {
+    /**
+     * Create an instance of an AzureSASCredential for use
+     * with a service client.
+     *
+     * @param signature - The initial value of the shared access signature to use in authentication
+     */
+    constructor(signature) {
+        if (!signature) {
+            throw new Error("shared access signature must be a non-empty string");
+        }
+        this._signature = signature;
+    }
+    /**
+     * The value of the shared access signature to be used in authentication
+     */
+    get signature() {
+        return this._signature;
+    }
+    /**
+     * Change the value of the signature.
+     *
+     * Updates will take effect upon the next request after
+     * updating the signature value.
+     *
+     * @param newSignature - The new shared access signature value to be used
+     */
+    update(newSignature) {
+        if (!newSignature) {
+            throw new Error("shared access signature must be a non-empty string");
+        }
+        this._signature = newSignature;
+    }
+}
+/**
+ * Tests an object to determine whether it implements SASCredential.
+ *
+ * @param credential - The assumed SASCredential to be tested.
+ */
+function isSASCredential(credential) {
+    return (isObjectWithProperties(credential, ["signature"]) && typeof credential.signature === "string");
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Tests an object to determine whether it implements TokenCredential.
  *
- * @param credential The assumed TokenCredential to be tested.
+ * @param credential - The assumed TokenCredential to be tested.
  */
 function isTokenCredential(credential) {
     // Check for an object with a 'getToken' function and possibly with
@@ -4875,20 +5050,31 @@ function isTokenCredential(credential) {
     // a ServiceClientCredentials implementor (like TokenClientCredentials
     // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if
     // it doesn't actually implement TokenCredential also.
-    return (credential &&
-        typeof credential.getToken === "function" &&
-        (credential.signRequest === undefined || credential.getToken.length > 0));
+    const castCredential = credential;
+    return (castCredential &&
+        typeof castCredential.getToken === "function" &&
+        (castCredential.signRequest === undefined || castCredential.getToken.length > 0));
 }
 
 exports.AzureKeyCredential = AzureKeyCredential;
+exports.AzureNamedKeyCredential = AzureNamedKeyCredential;
+exports.AzureSASCredential = AzureSASCredential;
+exports.isNamedKeyCredential = isNamedKeyCredential;
+exports.isSASCredential = isSASCredential;
 exports.isTokenCredential = isTokenCredential;
 //# sourceMappingURL=index.js.map
 
 
 /***/ }),
 /* 230 */,
-/* 231 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/* 231 */,
+/* 232 */,
+/* 233 */,
+/* 234 */,
+/* 235 */,
+/* 236 */,
+/* 237 */
+/***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
@@ -4907,29 +5093,49 @@ exports.isTokenCredential = isTokenCredential;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
-};
 Object.defineProperty(exports, "__esModule", { value: true });
-__exportStar(__webpack_require__(328), exports);
-__exportStar(__webpack_require__(715), exports);
-__exportStar(__webpack_require__(924), exports);
-//# sourceMappingURL=index.js.map
+exports.DiagConsoleLogger = void 0;
+var consoleMap = [
+    { n: 'error', c: 'error' },
+    { n: 'warn', c: 'warn' },
+    { n: 'info', c: 'info' },
+    { n: 'debug', c: 'debug' },
+    { n: 'verbose', c: 'trace' },
+];
+/**
+ * A simple Immutable Console based diagnostic logger which will output any messages to the Console.
+ * If you want to limit the amount of logging to a specific level or lower use the
+ * {@link createLogLevelDiagLogger}
+ */
+var DiagConsoleLogger = /** @class */ (function () {
+    function DiagConsoleLogger() {
+        function _consoleFunc(funcName) {
+            return function () {
+                var orgArguments = arguments;
+                if (console) {
+                    // Some environments only expose the console when the F12 developer console is open
+                    var theFunc = console[funcName];
+                    if (typeof theFunc !== 'function') {
+                        // Not all environments support all functions
+                        theFunc = console.log;
+                    }
+                    // One last final check
+                    if (typeof theFunc === 'function') {
+                        return theFunc.apply(console, orgArguments);
+                    }
+                }
+            };
+        }
+        for (var i = 0; i < consoleMap.length; i++) {
+            this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);
+        }
+    }
+    return DiagConsoleLogger;
+}());
+exports.DiagConsoleLogger = DiagConsoleLogger;
+//# sourceMappingURL=consoleLogger.js.map
 
 /***/ }),
-/* 232 */,
-/* 233 */,
-/* 234 */,
-/* 235 */,
-/* 236 */,
-/* 237 */,
 /* 238 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -5233,7 +5439,7 @@ function downloadCacheHttpClient(archiveLocation, archivePath) {
         const contentLengthHeader = downloadResponse.message.headers['content-length'];
         if (contentLengthHeader) {
             const expectedLength = parseInt(contentLengthHeader);
-            const actualLength = utils.getArchiveFileSizeIsBytes(archivePath);
+            const actualLength = utils.getArchiveFileSizeInBytes(archivePath);
             if (actualLength !== expectedLength) {
                 throw new Error(`Incomplete download. Expected file size: ${expectedLength}, actual file size: ${actualLength}`);
             }
@@ -5307,7 +5513,213 @@ exports.downloadCacheStorageSDK = downloadCacheStorageSDK;
 /* 253 */,
 /* 254 */,
 /* 255 */,
-/* 256 */,
+/* 256 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+const usm = __webpack_require__(936);
+
+exports.implementation = class URLImpl {
+  constructor(constructorArgs) {
+    const url = constructorArgs[0];
+    const base = constructorArgs[1];
+
+    let parsedBase = null;
+    if (base !== undefined) {
+      parsedBase = usm.basicURLParse(base);
+      if (parsedBase === "failure") {
+        throw new TypeError("Invalid base URL");
+      }
+    }
+
+    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
+    }
+
+    this._url = parsedURL;
+
+    // TODO: query stuff
+  }
+
+  get href() {
+    return usm.serializeURL(this._url);
+  }
+
+  set href(v) {
+    const parsedURL = usm.basicURLParse(v);
+    if (parsedURL === "failure") {
+      throw new TypeError("Invalid URL");
+    }
+
+    this._url = parsedURL;
+  }
+
+  get origin() {
+    return usm.serializeURLOrigin(this._url);
+  }
+
+  get protocol() {
+    return this._url.scheme + ":";
+  }
+
+  set protocol(v) {
+    usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
+  }
+
+  get username() {
+    return this._url.username;
+  }
+
+  set username(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    usm.setTheUsername(this._url, v);
+  }
+
+  get password() {
+    return this._url.password;
+  }
+
+  set password(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    usm.setThePassword(this._url, v);
+  }
+
+  get host() {
+    const url = this._url;
+
+    if (url.host === null) {
+      return "";
+    }
+
+    if (url.port === null) {
+      return usm.serializeHost(url.host);
+    }
+
+    return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
+  }
+
+  set host(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
+  }
+
+  get hostname() {
+    if (this._url.host === null) {
+      return "";
+    }
+
+    return usm.serializeHost(this._url.host);
+  }
+
+  set hostname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
+  }
+
+  get port() {
+    if (this._url.port === null) {
+      return "";
+    }
+
+    return usm.serializeInteger(this._url.port);
+  }
+
+  set port(v) {
+    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+      return;
+    }
+
+    if (v === "") {
+      this._url.port = null;
+    } else {
+      usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
+    }
+  }
+
+  get pathname() {
+    if (this._url.cannotBeABaseURL) {
+      return this._url.path[0];
+    }
+
+    if (this._url.path.length === 0) {
+      return "";
+    }
+
+    return "/" + this._url.path.join("/");
+  }
+
+  set pathname(v) {
+    if (this._url.cannotBeABaseURL) {
+      return;
+    }
+
+    this._url.path = [];
+    usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
+  }
+
+  get search() {
+    if (this._url.query === null || this._url.query === "") {
+      return "";
+    }
+
+    return "?" + this._url.query;
+  }
+
+  set search(v) {
+    // TODO: query stuff
+
+    const url = this._url;
+
+    if (v === "") {
+      url.query = null;
+      return;
+    }
+
+    const input = v[0] === "?" ? v.substring(1) : v;
+    url.query = "";
+    usm.basicURLParse(input, { url, stateOverride: "query" });
+  }
+
+  get hash() {
+    if (this._url.fragment === null || this._url.fragment === "") {
+      return "";
+    }
+
+    return "#" + this._url.fragment;
+  }
+
+  set hash(v) {
+    if (v === "") {
+      this._url.fragment = null;
+      return;
+    }
+
+    const input = v[0] === "#" ? v.substring(1) : v;
+    this._url.fragment = "";
+    usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
+  }
+
+  toJSON() {
+    return this.href;
+  }
+};
+
+
+/***/ }),
 /* 257 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -6113,622 +6525,193 @@ exports.downloadCacheStorageSDK = downloadCacheStorageSDK;
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var api = __webpack_require__(440);
-var tslib = __webpack_require__(144);
 
 // Copyright (c) Microsoft Corporation.
+(function (SpanKind) {
+    /** Default value. Indicates that the span is used internally. */
+    SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL";
+    /**
+     * Indicates that the span covers server-side handling of an RPC or other
+     * remote request.
+     */
+    SpanKind[SpanKind["SERVER"] = 1] = "SERVER";
+    /**
+     * Indicates that the span covers the client-side wrapper around an RPC or
+     * other remote request.
+     */
+    SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT";
+    /**
+     * Indicates that the span describes producer sending a message to a
+     * broker. Unlike client and server, there is no direct critical path latency
+     * relationship between producer and consumer spans.
+     */
+    SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER";
+    /**
+     * Indicates that the span describes consumer receiving a message from a
+     * broker. Unlike client and server, there is no direct critical path latency
+     * relationship between producer and consumer spans.
+     */
+    SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER";
+})(exports.SpanKind || (exports.SpanKind = {}));
 /**
- * A no-op implementation of Span that can safely be used without side-effects.
+ * Return the span if one exists
+ *
+ * @param context - context to get span from
  */
-var NoOpSpan = /** @class */ (function () {
-    function NoOpSpan() {
-    }
+function getSpan(context) {
+    return api.trace.getSpan(context);
+}
+/**
+ * Set the span on a context
+ *
+ * @param context - context to use as parent
+ * @param span - span to set active
+ */
+function setSpan(context, span) {
+    return api.trace.setSpan(context, span);
+}
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context - context to set active span on
+ * @param spanContext - span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return api.trace.setSpanContext(context, spanContext);
+}
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context - context to get values from
+ */
+function getSpanContext(context) {
+    return api.trace.getSpanContext(context);
+}
+/**
+ * Returns true of the given {@link SpanContext} is valid.
+ * A valid {@link SpanContext} is one which has a valid trace ID and span ID as per the spec.
+ *
+ * @param context - the {@link SpanContext} to validate.
+ *
+ * @returns true if the {@link SpanContext} is valid, false otherwise.
+ */
+function isSpanContextValid(context) {
+    return api.trace.isSpanContextValid(context);
+}
+function getTracer(name, version) {
+    return api.trace.getTracer(name || "azure/core-tracing", version);
+}
+/** Entrypoint for context API */
+const context = api.context;
+(function (SpanStatusCode) {
     /**
-     * Returns the SpanContext associated with this Span.
+     * The default status.
      */
-    NoOpSpan.prototype.context = function () {
-        return {
-            spanId: "",
-            traceId: "",
-            traceFlags: api.TraceFlags.NONE
-        };
-    };
+    SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
     /**
-     * Marks the end of Span execution.
-     * @param _endTime The time to use as the Span's end time. Defaults to
-     * the current time.
+     * The operation has been validated by an Application developer or
+     * Operator to have completed successfully.
      */
-    NoOpSpan.prototype.end = function (_endTime) {
-        /* Noop */
-    };
+    SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
     /**
-     * Sets an attribute on the Span
-     * @param _key the attribute key
-     * @param _value the attribute value
+     * The operation contains an error.
      */
-    NoOpSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param _attributes the attributes to add
-     */
-    NoOpSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param _name The name of the event
-     * @param _attributes The associated attributes to add for this event
-     */
-    NoOpSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param _status The status to set.
-     */
-    NoOpSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param _name the new Span name
-     */
-    NoOpSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    NoOpSpan.prototype.isRecording = function () {
+    SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
+})(exports.SpanStatusCode || (exports.SpanStatusCode = {}));
+
+// Copyright (c) Microsoft Corporation.
+function isTracingDisabled() {
+    var _a;
+    if (typeof process === "undefined") {
+        // not supported in browser for now without polyfills
         return false;
-    };
-    return NoOpSpan;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A no-op implementation of Tracer that can be used when tracing
- * is disabled.
- */
-var NoOpTracer = /** @class */ (function () {
-    function NoOpTracer() {
     }
-    /**
-     * Starts a new Span.
-     * @param _name The name of the span.
-     * @param _options The SpanOptions used during Span creation.
-     */
-    NoOpTracer.prototype.startSpan = function (_name, _options) {
-        return new NoOpSpan();
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    NoOpTracer.prototype.getCurrentSpan = function () {
-        return new NoOpSpan();
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span The span that provides the context.
-     * @param fn The function to be executed.
-     */
-    NoOpTracer.prototype.withSpan = function (_span, fn) {
-        return fn();
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target An object to bind the scope.
-     * @param _span A specific Span to use. Otherwise, use the current one.
-     */
-    NoOpTracer.prototype.bind = function (target, _span) {
-        return target;
-    };
-    return NoOpTracer;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function getGlobalObject() {
-    return global;
+    const azureTracingDisabledValue = (_a = process.env.AZURE_TRACING_DISABLED) === null || _a === void 0 ? void 0 : _a.toLowerCase();
+    if (azureTracingDisabledValue === "false" || azureTracingDisabledValue === "0") {
+        return false;
+    }
+    return Boolean(azureTracingDisabledValue);
 }
-
-// Copyright (c) Microsoft Corporation.
-// V1 = OpenTelemetry 0.1
-// V2 = OpenTelemetry 0.2
-// V3 = OpenTelemetry 0.6.1
-var GLOBAL_TRACER_VERSION = 3;
-// preview5 shipped with @azure/core-tracing.tracerCache
-// and didn't have smart detection for collisions
-var GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache2");
-var cache;
-function loadTracerCache() {
-    var globalObj = getGlobalObject();
-    var existingCache = globalObj[GLOBAL_TRACER_SYMBOL];
-    var setGlobalCache = true;
-    if (existingCache) {
-        if (existingCache.version === GLOBAL_TRACER_VERSION) {
-            cache = existingCache;
+/**
+ * Creates a function that can be used to create spans using the global tracer.
+ *
+ * Usage:
+ *
+ * ```typescript
+ * // once
+ * const createSpan = createSpanFunction({ packagePrefix: "Azure.Data.AppConfiguration", namespace: "Microsoft.AppConfiguration" });
+ *
+ * // in each operation
+ * const span = createSpan("deleteConfigurationSetting", operationOptions);
+ *    // code...
+ * span.end();
+ * ```
+ *
+ * @hidden
+ * @param args - allows configuration of the prefix for each span as well as the az.namespace field.
+ */
+function createSpanFunction(args) {
+    return function (operationName, operationOptions) {
+        const tracer = getTracer();
+        const tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
+        const spanOptions = Object.assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
+        const spanName = args.packagePrefix ? `${args.packagePrefix}.${operationName}` : operationName;
+        let span;
+        if (isTracingDisabled()) {
+            span = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);
         }
         else {
-            setGlobalCache = false;
-            if (existingCache.tracer) {
-                throw new Error("Two incompatible versions of @azure/core-tracing have been loaded.\n          This library is " + GLOBAL_TRACER_VERSION + ", existing is " + existingCache.version + ".");
-            }
+            span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
         }
-    }
-    if (!cache) {
-        cache = {
-            tracer: undefined,
-            version: GLOBAL_TRACER_VERSION
-        };
-    }
-    if (setGlobalCache) {
-        globalObj[GLOBAL_TRACER_SYMBOL] = cache;
-    }
-}
-function getCache() {
-    if (!cache) {
-        loadTracerCache();
-    }
-    return cache;
-}
-
-// Copyright (c) Microsoft Corporation.
-var defaultTracer;
-function getDefaultTracer() {
-    if (!defaultTracer) {
-        defaultTracer = new NoOpTracer();
-    }
-    return defaultTracer;
-}
-/**
- * Sets the global tracer, enabling tracing for the Azure SDK.
- * @param tracer An OpenTelemetry Tracer instance.
- */
-function setTracer(tracer) {
-    var cache = getCache();
-    cache.tracer = tracer;
-}
-/**
- * Retrieves the active tracer, or returns a
- * no-op implementation if one is not set.
- */
-function getTracer() {
-    var cache = getCache();
-    if (!cache.tracer) {
-        return getDefaultTracer();
-    }
-    return cache.tracer;
-}
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * @ignore
- * @internal
- */
-var OpenCensusTraceStateWrapper = /** @class */ (function () {
-    function OpenCensusTraceStateWrapper(state) {
-        this._state = state;
-    }
-    OpenCensusTraceStateWrapper.prototype.get = function (_key) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.set = function (_key, _value) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.unset = function (_key) {
-        throw new Error("Method not implemented");
-    };
-    OpenCensusTraceStateWrapper.prototype.serialize = function () {
-        return this._state || "";
-    };
-    return OpenCensusTraceStateWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-function isWrappedSpan(span) {
-    return !!span && span.getWrappedSpan !== undefined;
-}
-function isTracer(tracerOrSpan) {
-    return tracerOrSpan.getWrappedTracer !== undefined;
-}
-/**
- * An implementation of OpenTelemetry Span that wraps an OpenCensus Span.
- */
-var OpenCensusSpanWrapper = /** @class */ (function () {
-    function OpenCensusSpanWrapper(tracerOrSpan, name, options) {
-        if (name === void 0) { name = ""; }
-        if (options === void 0) { options = {}; }
-        if (isTracer(tracerOrSpan)) {
-            var parent = isWrappedSpan(options.parent) ? options.parent.getWrappedSpan() : undefined;
-            this._span = tracerOrSpan.getWrappedTracer().startChildSpan({
-                name: name,
-                childOf: parent
-            });
-            this._span.start();
-            if (options.links) {
-                for (var _i = 0, _a = options.links; _i < _a.length; _i++) {
-                    var link = _a[_i];
-                    // Since there is no way to set the link relationship, leave it as Unspecified.
-                    this._span.addLink(link.context.traceId, link.context.spanId, 0 /* LinkType.UNSPECIFIED */, link.attributes);
-                }
-            }
+        if (args.namespace) {
+            span.setAttribute("az.namespace", args.namespace);
         }
-        else {
-            this._span = tracerOrSpan;
+        let newSpanOptions = tracingOptions.spanOptions || {};
+        if (span.isRecording() && args.namespace) {
+            newSpanOptions = Object.assign(Object.assign({}, tracingOptions.spanOptions), { attributes: Object.assign(Object.assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
         }
-    }
-    /**
-     * The underlying OpenCensus Span
-     */
-    OpenCensusSpanWrapper.prototype.getWrappedSpan = function () {
-        return this._span;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param endTime The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    OpenCensusSpanWrapper.prototype.end = function (_endTime) {
-        this._span.end();
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    OpenCensusSpanWrapper.prototype.context = function () {
-        var openCensusSpanContext = this._span.spanContext;
+        const newTracingOptions = Object.assign(Object.assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
+        const newOperationOptions = Object.assign(Object.assign({}, operationOptions), { tracingOptions: newTracingOptions });
         return {
-            spanId: openCensusSpanContext.spanId,
-            traceId: openCensusSpanContext.traceId,
-            traceFlags: openCensusSpanContext.options,
-            traceState: new OpenCensusTraceStateWrapper(openCensusSpanContext.traceState)
+            span,
+            updatedOptions: newOperationOptions
         };
     };
-    /**
-     * Sets an attribute on the Span
-     * @param key the attribute key
-     * @param value the attribute value
-     */
-    OpenCensusSpanWrapper.prototype.setAttribute = function (key, value) {
-        this._span.addAttribute(key, value);
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes the attributes to add
-     */
-    OpenCensusSpanWrapper.prototype.setAttributes = function (attributes) {
-        this._span.attributes = attributes;
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param name The name of the event
-     * @param attributes The associated attributes to add for this event
-     */
-    OpenCensusSpanWrapper.prototype.addEvent = function (_name, _attributes) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param status The status to set.
-     */
-    OpenCensusSpanWrapper.prototype.setStatus = function (status) {
-        this._span.setStatus(status.code, status.message);
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param name the new Span name
-     */
-    OpenCensusSpanWrapper.prototype.updateName = function (name) {
-        this._span.name = name;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    OpenCensusSpanWrapper.prototype.isRecording = function () {
-        // NoRecordSpans have an empty traceId
-        return !!this._span.traceId;
-    };
-    return OpenCensusSpanWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * An implementation of OpenTelemetry Tracer that wraps an OpenCensus Tracer.
- */
-var OpenCensusTracerWrapper = /** @class */ (function () {
-    /**
-     * Create a new wrapper around a given OpenCensus Tracer.
-     * @param tracer The OpenCensus Tracer to wrap.
-     */
-    function OpenCensusTracerWrapper(tracer) {
-        this._tracer = tracer;
-    }
-    /**
-     * The wrapped OpenCensus Tracer
-     */
-    OpenCensusTracerWrapper.prototype.getWrappedTracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Starts a new Span.
-     * @param name The name of the span.
-     * @param options The SpanOptions used during Span creation.
-     */
-    OpenCensusTracerWrapper.prototype.startSpan = function (name, options) {
-        return new OpenCensusSpanWrapper(this, name, options);
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    OpenCensusTracerWrapper.prototype.getCurrentSpan = function () {
-        return undefined;
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span The span that provides the context.
-     * @param _fn The function to be executed.
-     */
-    OpenCensusTracerWrapper.prototype.withSpan = function (_span, _fn) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target An object to bind the scope.
-     * @param _span A specific Span to use. Otherwise, use the current one.
-     */
-    OpenCensusTracerWrapper.prototype.bind = function (_target, _span) {
-        throw new Error("Method not implemented.");
-    };
-    return OpenCensusTracerWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock span useful for testing.
- */
-var TestSpan = /** @class */ (function (_super) {
-    tslib.__extends(TestSpan, _super);
-    /**
-     * Starts a new Span.
-     * @param parentTracer The tracer that created this Span
-     * @param name The name of the span.
-     * @param context The SpanContext this span belongs to
-     * @param kind The SpanKind of this Span
-     * @param parentSpanId The identifier of the parent Span
-     * @param startTime The startTime of the event (defaults to now)
-     */
-    function TestSpan(parentTracer, name, context, kind, parentSpanId, startTime) {
-        if (startTime === void 0) { startTime = Date.now(); }
-        var _this = _super.call(this) || this;
-        _this._tracer = parentTracer;
-        _this.name = name;
-        _this.kind = kind;
-        _this.startTime = startTime;
-        _this.parentSpanId = parentSpanId;
-        _this.status = {
-            code: api.CanonicalCode.OK
-        };
-        _this.endCalled = false;
-        _this._context = context;
-        _this.attributes = {};
-        return _this;
-    }
-    /**
-     * Returns the Tracer that created this Span
-     */
-    TestSpan.prototype.tracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    TestSpan.prototype.context = function () {
-        return this._context;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    TestSpan.prototype.end = function (_endTime) {
-        this.endCalled = true;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of CanonicalCode.OK.
-     * @param status The status to set.
-     */
-    TestSpan.prototype.setStatus = function (status) {
-        this.status = status;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    TestSpan.prototype.isRecording = function () {
-        return true;
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key the attribute key
-     * @param value the attribute value
-     */
-    TestSpan.prototype.setAttribute = function (key, value) {
-        this.attributes[key] = value;
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes the attributes to add
-     */
-    TestSpan.prototype.setAttributes = function (attributes) {
-        for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {
-            var key = _a[_i];
-            this.attributes[key] = attributes[key];
-        }
-        return this;
-    };
-    return TestSpan;
-}(NoOpSpan));
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock tracer useful for testing
- */
-var TestTracer = /** @class */ (function (_super) {
-    tslib.__extends(TestTracer, _super);
-    function TestTracer() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.traceIdCounter = 0;
-        _this.spanIdCounter = 0;
-        _this.rootSpans = [];
-        _this.knownSpans = [];
-        return _this;
-    }
-    TestTracer.prototype.getNextTraceId = function () {
-        this.traceIdCounter++;
-        return String(this.traceIdCounter);
-    };
-    TestTracer.prototype.getNextSpanId = function () {
-        this.spanIdCounter++;
-        return String(this.spanIdCounter);
-    };
-    /**
-     * Returns all Spans that were created without a parent
-     */
-    TestTracer.prototype.getRootSpans = function () {
-        return this.rootSpans;
-    };
-    /**
-     * Returns all Spans this Tracer knows about
-     */
-    TestTracer.prototype.getKnownSpans = function () {
-        return this.knownSpans;
-    };
-    /**
-     * Returns all Spans where end() has not been called
-     */
-    TestTracer.prototype.getActiveSpans = function () {
-        return this.knownSpans.filter(function (span) {
-            return !span.endCalled;
-        });
-    };
-    /**
-     * Return all Spans for a particular trace, grouped by their
-     * parent Span in a tree-like structure
-     * @param traceId The traceId to return the graph for
-     */
-    TestTracer.prototype.getSpanGraph = function (traceId) {
-        var traceSpans = this.knownSpans.filter(function (span) {
-            return span.context().traceId === traceId;
-        });
-        var roots = [];
-        var nodeMap = new Map();
-        for (var _i = 0, traceSpans_1 = traceSpans; _i < traceSpans_1.length; _i++) {
-            var span = traceSpans_1[_i];
-            var spanId = span.context().spanId;
-            var node = {
-                name: span.name,
-                children: []
-            };
-            nodeMap.set(spanId, node);
-            if (span.parentSpanId) {
-                var parent = nodeMap.get(span.parentSpanId);
-                if (!parent) {
-                    throw new Error("Span with name " + node.name + " has an unknown parentSpan with id " + span.parentSpanId);
-                }
-                parent.children.push(node);
-            }
-            else {
-                roots.push(node);
-            }
-        }
-        return {
-            roots: roots
-        };
-    };
-    /**
-     * Starts a new Span.
-     * @param name The name of the span.
-     * @param options The SpanOptions used during Span creation.
-     */
-    TestTracer.prototype.startSpan = function (name, options) {
-        if (options === void 0) { options = {}; }
-        var parentContext = this._getParentContext(options);
-        var traceId;
-        var isRootSpan = false;
-        if (parentContext && parentContext.traceId) {
-            traceId = parentContext.traceId;
-        }
-        else {
-            traceId = this.getNextTraceId();
-            isRootSpan = true;
-        }
-        var context = {
-            traceId: traceId,
-            spanId: this.getNextSpanId(),
-            traceFlags: api.TraceFlags.NONE
-        };
-        var span = new TestSpan(this, name, context, options.kind || api.SpanKind.INTERNAL, parentContext ? parentContext.spanId : undefined, options.startTime);
-        this.knownSpans.push(span);
-        if (isRootSpan) {
-            this.rootSpans.push(span);
-        }
-        return span;
-    };
-    TestTracer.prototype._getParentContext = function (options) {
-        var parent = options.parent;
-        var result;
-        if (parent) {
-            if ("traceId" in parent) {
-                result = parent;
-            }
-            else {
-                result = parent.context();
-            }
-        }
-        return result;
-    };
-    return TestTracer;
-}(NoOpTracer));
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var VERSION = "00";
+const VERSION = "00";
 /**
  * Generates a `SpanContext` given a `traceparent` header value.
- * @param traceParent Serialized span context data as a `traceparent` header value.
+ * @param traceParent - Serialized span context data as a `traceparent` header value.
  * @returns The `SpanContext` generated from the `traceparent` value.
  */
 function extractSpanContextFromTraceParentHeader(traceParentHeader) {
-    var parts = traceParentHeader.split("-");
+    const parts = traceParentHeader.split("-");
     if (parts.length !== 4) {
         return;
     }
-    var version = parts[0], traceId = parts[1], spanId = parts[2], traceOptions = parts[3];
+    const [version, traceId, spanId, traceOptions] = parts;
     if (version !== VERSION) {
         return;
     }
-    var traceFlags = parseInt(traceOptions, 16);
-    var spanContext = {
-        spanId: spanId,
-        traceId: traceId,
-        traceFlags: traceFlags
+    const traceFlags = parseInt(traceOptions, 16);
+    const spanContext = {
+        spanId,
+        traceId,
+        traceFlags
     };
     return spanContext;
 }
 /**
  * Generates a `traceparent` value given a span context.
- * @param spanContext Contains context for a specific span.
+ * @param spanContext - Contains context for a specific span.
  * @returns The `spanContext` represented as a `traceparent` value.
  */
 function getTraceParentHeader(spanContext) {
-    var missingFields = [];
+    const missingFields = [];
     if (!spanContext.traceId) {
         missingFields.push("traceId");
     }
@@ -6738,23 +6721,23 @@ function getTraceParentHeader(spanContext) {
     if (missingFields.length) {
         return;
     }
-    var flags = spanContext.traceFlags || 0 /* NONE */;
-    var hexFlags = flags.toString(16);
-    var traceFlags = hexFlags.length === 1 ? "0" + hexFlags : hexFlags;
+    const flags = spanContext.traceFlags || 0 /* NONE */;
+    const hexFlags = flags.toString(16);
+    const traceFlags = hexFlags.length === 1 ? `0${hexFlags}` : hexFlags;
     // https://www.w3.org/TR/trace-context/#traceparent-header-field-values
-    return VERSION + "-" + spanContext.traceId + "-" + spanContext.spanId + "-" + traceFlags;
+    return `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-${traceFlags}`;
 }
 
-exports.NoOpSpan = NoOpSpan;
-exports.NoOpTracer = NoOpTracer;
-exports.OpenCensusSpanWrapper = OpenCensusSpanWrapper;
-exports.OpenCensusTracerWrapper = OpenCensusTracerWrapper;
-exports.TestSpan = TestSpan;
-exports.TestTracer = TestTracer;
+exports.context = context;
+exports.createSpanFunction = createSpanFunction;
 exports.extractSpanContextFromTraceParentHeader = extractSpanContextFromTraceParentHeader;
+exports.getSpan = getSpan;
+exports.getSpanContext = getSpanContext;
 exports.getTraceParentHeader = getTraceParentHeader;
 exports.getTracer = getTracer;
-exports.setTracer = setTracer;
+exports.isSpanContextValid = isSpanContextValid;
+exports.setSpan = setSpan;
+exports.setSpanContext = setSpanContext;
 //# sourceMappingURL=index.js.map
 
 
@@ -6804,55 +6787,9 @@ exports.setTracer = setTracer;
 /* 273 */,
 /* 274 */,
 /* 275 */,
-/* 276 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Logger.js.map
-
-/***/ }),
+/* 276 */,
 /* 277 */,
-/* 278 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=CorrelationContext.js.map
-
-/***/ }),
+/* 278 */,
 /* 279 */,
 /* 280 */
 /***/ (function(module, exports) {
@@ -8471,6 +8408,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.create = void 0;
 const internal_globber_1 = __webpack_require__(297);
 /**
  * Constructs a globber
@@ -8512,6 +8450,25 @@ module.exports = require("buffer");
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -8541,11 +8498,12 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
     function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-const core = __webpack_require__(470);
-const fs = __webpack_require__(747);
-const globOptionsHelper = __webpack_require__(601);
-const path = __webpack_require__(622);
-const patternHelper = __webpack_require__(597);
+exports.DefaultGlobber = void 0;
+const core = __importStar(__webpack_require__(470));
+const fs = __importStar(__webpack_require__(747));
+const globOptionsHelper = __importStar(__webpack_require__(601));
+const path = __importStar(__webpack_require__(622));
+const patternHelper = __importStar(__webpack_require__(597));
 const internal_match_kind_1 = __webpack_require__(327);
 const internal_pattern_1 = __webpack_require__(923);
 const internal_search_state_1 = __webpack_require__(728);
@@ -8591,7 +8549,7 @@ class DefaultGlobber {
                 if (options.implicitDescendants &&
                     (pattern.trailingSeparator ||
                         pattern.segments[pattern.segments.length - 1] !== '**')) {
-                    patterns.push(new internal_pattern_1.Pattern(pattern.negate, pattern.segments.concat('**')));
+                    patterns.push(new internal_pattern_1.Pattern(pattern.negate, true, pattern.segments.concat('**')));
                 }
             }
             // Push the search paths
@@ -9050,30 +9008,7 @@ function expand(str, isTop) {
 /* 315 */,
 /* 316 */,
 /* 317 */,
-/* 318 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=BatchObserverResult.js.map
-
-/***/ }),
+/* 318 */,
 /* 319 */,
 /* 320 */,
 /* 321 */,
@@ -9088,6 +9023,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.MatchKind = void 0;
 /**
  * Indicates whether a pattern matches a path
  */
@@ -9105,30 +9041,7 @@ var MatchKind;
 //# sourceMappingURL=internal-match-kind.js.map
 
 /***/ }),
-/* 328 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=types.js.map
-
-/***/ }),
+/* 328 */,
 /* 329 */,
 /* 330 */,
 /* 331 */,
@@ -9478,12 +9391,7 @@ var SamplingDecision;
 /***/ }),
 /* 341 */,
 /* 342 */,
-/* 343 */
-/***/ (function(module) {
-
-module.exports = require("timers");
-
-/***/ }),
+/* 343 */,
 /* 344 */,
 /* 345 */,
 /* 346 */,
@@ -9653,7 +9561,92 @@ module.exports = require("assert");
 /* 359 */,
 /* 360 */,
 /* 361 */,
-/* 362 */,
+/* 362 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagComponentLogger = void 0;
+var global_utils_1 = __webpack_require__(525);
+/**
+ * Component Logger which is meant to be used as part of any component which
+ * will add automatically additional namespace in front of the log message.
+ * It will then forward all message to global diag logger
+ * @example
+ * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });
+ * cLogger.debug('test');
+ * // @opentelemetry/instrumentation-http test
+ */
+var DiagComponentLogger = /** @class */ (function () {
+    function DiagComponentLogger(props) {
+        this._namespace = props.namespace || 'DiagComponentLogger';
+    }
+    DiagComponentLogger.prototype.debug = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('debug', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.error = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('error', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.info = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('info', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.warn = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('warn', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.verbose = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('verbose', this._namespace, args);
+    };
+    return DiagComponentLogger;
+}());
+exports.DiagComponentLogger = DiagComponentLogger;
+function logProxy(funcName, namespace, args) {
+    var logger = global_utils_1.getGlobal('diag');
+    // shortcut if logger not set
+    if (!logger) {
+        return;
+    }
+    args.unshift(namespace);
+    return logger[funcName].apply(logger, args);
+}
+//# sourceMappingURL=ComponentLogger.js.map
+
+/***/ }),
 /* 363 */,
 /* 364 */,
 /* 365 */,
@@ -9673,45 +9666,296 @@ module.exports = require("assert");
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var coreHttp = __webpack_require__(999);
-var tslib = __webpack_require__(815);
-var api = __webpack_require__(440);
+var tslib = __webpack_require__(608);
+var coreTracing = __webpack_require__(263);
 var logger$1 = __webpack_require__(928);
 var abortController = __webpack_require__(106);
 var os = __webpack_require__(87);
+var crypto = __webpack_require__(417);
 var stream = __webpack_require__(794);
 __webpack_require__(510);
-var crypto = __webpack_require__(417);
 var coreLro = __webpack_require__(889);
 var events = __webpack_require__(614);
-var coreTracing = __webpack_require__(263);
 var fs = __webpack_require__(747);
 var util = __webpack_require__(669);
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var KeyInfo = {
-    serializedName: "KeyInfo",
+const BlobServiceProperties = {
+    serializedName: "BlobServiceProperties",
+    xmlName: "StorageServiceProperties",
     type: {
         name: "Composite",
-        className: "KeyInfo",
+        className: "BlobServiceProperties",
         modelProperties: {
-            startsOn: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
+            blobAnalyticsLogging: {
+                serializedName: "Logging",
+                xmlName: "Logging",
+                type: {
+                    name: "Composite",
+                    className: "Logging"
+                }
+            },
+            hourMetrics: {
+                serializedName: "HourMetrics",
+                xmlName: "HourMetrics",
+                type: {
+                    name: "Composite",
+                    className: "Metrics"
+                }
+            },
+            minuteMetrics: {
+                serializedName: "MinuteMetrics",
+                xmlName: "MinuteMetrics",
+                type: {
+                    name: "Composite",
+                    className: "Metrics"
+                }
+            },
+            cors: {
+                serializedName: "Cors",
+                xmlName: "Cors",
+                xmlIsWrapped: true,
+                xmlElementName: "CorsRule",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "CorsRule"
+                        }
+                    }
+                }
+            },
+            defaultServiceVersion: {
+                serializedName: "DefaultServiceVersion",
+                xmlName: "DefaultServiceVersion",
                 type: {
                     name: "String"
                 }
             },
-            expiresOn: {
-                xmlName: "Expiry",
+            deleteRetentionPolicy: {
+                serializedName: "DeleteRetentionPolicy",
+                xmlName: "DeleteRetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            },
+            staticWebsite: {
+                serializedName: "StaticWebsite",
+                xmlName: "StaticWebsite",
+                type: {
+                    name: "Composite",
+                    className: "StaticWebsite"
+                }
+            }
+        }
+    }
+};
+const Logging = {
+    serializedName: "Logging",
+    type: {
+        name: "Composite",
+        className: "Logging",
+        modelProperties: {
+            version: {
+                serializedName: "Version",
                 required: true,
-                serializedName: "Expiry",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            deleteProperty: {
+                serializedName: "Delete",
+                required: true,
+                xmlName: "Delete",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            read: {
+                serializedName: "Read",
+                required: true,
+                xmlName: "Read",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            write: {
+                serializedName: "Write",
+                required: true,
+                xmlName: "Write",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            retentionPolicy: {
+                serializedName: "RetentionPolicy",
+                xmlName: "RetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            }
+        }
+    }
+};
+const RetentionPolicy = {
+    serializedName: "RetentionPolicy",
+    type: {
+        name: "Composite",
+        className: "RetentionPolicy",
+        modelProperties: {
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            days: {
+                constraints: {
+                    InclusiveMinimum: 1
+                },
+                serializedName: "Days",
+                xmlName: "Days",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const Metrics = {
+    serializedName: "Metrics",
+    type: {
+        name: "Composite",
+        className: "Metrics",
+        modelProperties: {
+            version: {
+                serializedName: "Version",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            includeAPIs: {
+                serializedName: "IncludeAPIs",
+                xmlName: "IncludeAPIs",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            retentionPolicy: {
+                serializedName: "RetentionPolicy",
+                xmlName: "RetentionPolicy",
+                type: {
+                    name: "Composite",
+                    className: "RetentionPolicy"
+                }
+            }
+        }
+    }
+};
+const CorsRule = {
+    serializedName: "CorsRule",
+    type: {
+        name: "Composite",
+        className: "CorsRule",
+        modelProperties: {
+            allowedOrigins: {
+                serializedName: "AllowedOrigins",
+                required: true,
+                xmlName: "AllowedOrigins",
+                type: {
+                    name: "String"
+                }
+            },
+            allowedMethods: {
+                serializedName: "AllowedMethods",
+                required: true,
+                xmlName: "AllowedMethods",
+                type: {
+                    name: "String"
+                }
+            },
+            allowedHeaders: {
+                serializedName: "AllowedHeaders",
+                required: true,
+                xmlName: "AllowedHeaders",
+                type: {
+                    name: "String"
+                }
+            },
+            exposedHeaders: {
+                serializedName: "ExposedHeaders",
+                required: true,
+                xmlName: "ExposedHeaders",
+                type: {
+                    name: "String"
+                }
+            },
+            maxAgeInSeconds: {
+                constraints: {
+                    InclusiveMinimum: 0
+                },
+                serializedName: "MaxAgeInSeconds",
+                required: true,
+                xmlName: "MaxAgeInSeconds",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const StaticWebsite = {
+    serializedName: "StaticWebsite",
+    type: {
+        name: "Composite",
+        className: "StaticWebsite",
+        modelProperties: {
+            enabled: {
+                serializedName: "Enabled",
+                required: true,
+                xmlName: "Enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            indexDocument: {
+                serializedName: "IndexDocument",
+                xmlName: "IndexDocument",
+                type: {
+                    name: "String"
+                }
+            },
+            errorDocument404Path: {
+                serializedName: "ErrorDocument404Path",
+                xmlName: "ErrorDocument404Path",
+                type: {
+                    name: "String"
+                }
+            },
+            defaultIndexDocumentPath: {
+                serializedName: "DefaultIndexDocumentPath",
+                xmlName: "DefaultIndexDocumentPath",
                 type: {
                     name: "String"
                 }
@@ -9719,103 +9963,22 @@ var KeyInfo = {
         }
     }
 };
-var UserDelegationKey = {
-    serializedName: "UserDelegationKey",
-    type: {
-        name: "Composite",
-        className: "UserDelegationKey",
-        modelProperties: {
-            signedObjectId: {
-                xmlName: "SignedOid",
-                required: true,
-                serializedName: "SignedOid",
-                type: {
-                    name: "String"
-                }
-            },
-            signedTenantId: {
-                xmlName: "SignedTid",
-                required: true,
-                serializedName: "SignedTid",
-                type: {
-                    name: "String"
-                }
-            },
-            signedStartsOn: {
-                xmlName: "SignedStart",
-                required: true,
-                serializedName: "SignedStart",
-                type: {
-                    name: "String"
-                }
-            },
-            signedExpiresOn: {
-                xmlName: "SignedExpiry",
-                required: true,
-                serializedName: "SignedExpiry",
-                type: {
-                    name: "String"
-                }
-            },
-            signedService: {
-                xmlName: "SignedService",
-                required: true,
-                serializedName: "SignedService",
-                type: {
-                    name: "String"
-                }
-            },
-            signedVersion: {
-                xmlName: "SignedVersion",
-                required: true,
-                serializedName: "SignedVersion",
-                type: {
-                    name: "String"
-                }
-            },
-            value: {
-                xmlName: "Value",
-                required: true,
-                serializedName: "Value",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var StorageError = {
+const StorageError = {
     serializedName: "StorageError",
     type: {
         name: "Composite",
         className: "StorageError",
         modelProperties: {
             message: {
-                xmlName: "Message",
                 serializedName: "Message",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var DataLakeStorageErrorError = {
-    serializedName: "DataLakeStorageError_error",
-    type: {
-        name: "Composite",
-        className: "DataLakeStorageErrorError",
-        modelProperties: {
-            code: {
-                xmlName: "Code",
-                serializedName: "Code",
+                xmlName: "Message",
                 type: {
                     name: "String"
                 }
             },
-            message: {
-                xmlName: "Message",
-                serializedName: "Message",
+            code: {
+                serializedName: "Code",
+                xmlName: "Code",
                 type: {
                     name: "String"
                 }
@@ -9823,165 +9986,194 @@ var DataLakeStorageErrorError = {
         }
     }
 };
-var DataLakeStorageError = {
-    serializedName: "DataLakeStorageError",
+const BlobServiceStatistics = {
+    serializedName: "BlobServiceStatistics",
+    xmlName: "StorageServiceStats",
     type: {
         name: "Composite",
-        className: "DataLakeStorageError",
+        className: "BlobServiceStatistics",
         modelProperties: {
-            dataLakeStorageErrorDetails: {
-                xmlName: "error",
-                serializedName: "error",
+            geoReplication: {
+                serializedName: "GeoReplication",
+                xmlName: "GeoReplication",
                 type: {
                     name: "Composite",
-                    className: "DataLakeStorageErrorError"
+                    className: "GeoReplication"
                 }
             }
         }
     }
 };
-var AccessPolicy = {
-    serializedName: "AccessPolicy",
+const GeoReplication = {
+    serializedName: "GeoReplication",
     type: {
         name: "Composite",
-        className: "AccessPolicy",
+        className: "GeoReplication",
         modelProperties: {
-            startsOn: {
-                xmlName: "Start",
-                serializedName: "Start",
+            status: {
+                serializedName: "Status",
+                required: true,
+                xmlName: "Status",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["live", "bootstrap", "unavailable"]
                 }
             },
-            expiresOn: {
-                xmlName: "Expiry",
-                serializedName: "Expiry",
-                type: {
-                    name: "String"
-                }
-            },
-            permissions: {
-                xmlName: "Permission",
-                serializedName: "Permission",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobPropertiesInternal = {
-    xmlName: "Properties",
-    serializedName: "BlobPropertiesInternal",
-    type: {
-        name: "Composite",
-        className: "BlobPropertiesInternal",
-        modelProperties: {
-            createdOn: {
-                xmlName: "Creation-Time",
-                serializedName: "Creation-Time",
+            lastSyncOn: {
+                serializedName: "LastSyncTime",
+                required: true,
+                xmlName: "LastSyncTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
-            lastModified: {
-                xmlName: "Last-Modified",
+            }
+        }
+    }
+};
+const ListContainersSegmentResponse = {
+    serializedName: "ListContainersSegmentResponse",
+    xmlName: "EnumerationResults",
+    type: {
+        name: "Composite",
+        className: "ListContainersSegmentResponse",
+        modelProperties: {
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
                 required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
+                type: {
+                    name: "String"
+                }
+            },
+            prefix: {
+                serializedName: "Prefix",
+                xmlName: "Prefix",
+                type: {
+                    name: "String"
+                }
+            },
+            marker: {
+                serializedName: "Marker",
+                xmlName: "Marker",
+                type: {
+                    name: "String"
+                }
+            },
+            maxPageSize: {
+                serializedName: "MaxResults",
+                xmlName: "MaxResults",
+                type: {
+                    name: "Number"
+                }
+            },
+            containerItems: {
+                serializedName: "ContainerItems",
+                required: true,
+                xmlName: "Containers",
+                xmlIsWrapped: true,
+                xmlElementName: "Container",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "ContainerItem"
+                        }
+                    }
+                }
+            },
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerItem = {
+    serializedName: "ContainerItem",
+    xmlName: "Container",
+    type: {
+        name: "Composite",
+        className: "ContainerItem",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            },
+            deleted: {
+                serializedName: "Deleted",
+                xmlName: "Deleted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            version: {
+                serializedName: "Version",
+                xmlName: "Version",
+                type: {
+                    name: "String"
+                }
+            },
+            properties: {
+                serializedName: "Properties",
+                xmlName: "Properties",
+                type: {
+                    name: "Composite",
+                    className: "ContainerProperties"
+                }
+            },
+            metadata: {
+                serializedName: "Metadata",
+                xmlName: "Metadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            }
+        }
+    }
+};
+const ContainerProperties = {
+    serializedName: "ContainerProperties",
+    type: {
+        name: "Composite",
+        className: "ContainerProperties",
+        modelProperties: {
+            lastModified: {
                 serializedName: "Last-Modified",
+                required: true,
+                xmlName: "Last-Modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             etag: {
-                xmlName: "Etag",
-                required: true,
                 serializedName: "Etag",
+                required: true,
+                xmlName: "Etag",
                 type: {
                     name: "String"
                 }
             },
-            contentLength: {
-                xmlName: "Content-Length",
-                serializedName: "Content-Length",
-                type: {
-                    name: "Number"
-                }
-            },
-            contentType: {
-                xmlName: "Content-Type",
-                serializedName: "Content-Type",
-                type: {
-                    name: "String"
-                }
-            },
-            contentEncoding: {
-                xmlName: "Content-Encoding",
-                serializedName: "Content-Encoding",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLanguage: {
-                xmlName: "Content-Language",
-                serializedName: "Content-Language",
-                type: {
-                    name: "String"
-                }
-            },
-            contentMD5: {
-                xmlName: "Content-MD5",
-                serializedName: "Content-MD5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentDisposition: {
-                xmlName: "Content-Disposition",
-                serializedName: "Content-Disposition",
-                type: {
-                    name: "String"
-                }
-            },
-            cacheControl: {
-                xmlName: "Cache-Control",
-                serializedName: "Cache-Control",
-                type: {
-                    name: "String"
-                }
-            },
-            blobSequenceNumber: {
-                xmlName: "x-ms-blob-sequence-number",
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            blobType: {
-                xmlName: "BlobType",
-                serializedName: "BlobType",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
-                }
-            },
             leaseStatus: {
-                xmlName: "LeaseStatus",
                 serializedName: "LeaseStatus",
+                xmlName: "LeaseStatus",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             leaseState: {
-                xmlName: "LeaseState",
                 serializedName: "LeaseState",
+                xmlName: "LeaseState",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -9994,165 +10186,91 @@ var BlobPropertiesInternal = {
                 }
             },
             leaseDuration: {
-                xmlName: "LeaseDuration",
                 serializedName: "LeaseDuration",
+                xmlName: "LeaseDuration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
-            copyId: {
-                xmlName: "CopyId",
-                serializedName: "CopyId",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                xmlName: "CopyStatus",
-                serializedName: "CopyStatus",
+            publicAccess: {
+                serializedName: "PublicAccess",
+                xmlName: "PublicAccess",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["container", "blob"]
                 }
             },
-            copySource: {
-                xmlName: "CopySource",
-                serializedName: "CopySource",
-                type: {
-                    name: "String"
-                }
-            },
-            copyProgress: {
-                xmlName: "CopyProgress",
-                serializedName: "CopyProgress",
-                type: {
-                    name: "String"
-                }
-            },
-            copyCompletedOn: {
-                xmlName: "CopyCompletionTime",
-                serializedName: "CopyCompletionTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyStatusDescription: {
-                xmlName: "CopyStatusDescription",
-                serializedName: "CopyStatusDescription",
-                type: {
-                    name: "String"
-                }
-            },
-            serverEncrypted: {
-                xmlName: "ServerEncrypted",
-                serializedName: "ServerEncrypted",
+            hasImmutabilityPolicy: {
+                serializedName: "HasImmutabilityPolicy",
+                xmlName: "HasImmutabilityPolicy",
                 type: {
                     name: "Boolean"
                 }
             },
-            incrementalCopy: {
-                xmlName: "IncrementalCopy",
-                serializedName: "IncrementalCopy",
+            hasLegalHold: {
+                serializedName: "HasLegalHold",
+                xmlName: "HasLegalHold",
                 type: {
                     name: "Boolean"
                 }
             },
-            destinationSnapshot: {
-                xmlName: "DestinationSnapshot",
-                serializedName: "DestinationSnapshot",
+            defaultEncryptionScope: {
+                serializedName: "DefaultEncryptionScope",
+                xmlName: "DefaultEncryptionScope",
                 type: {
                     name: "String"
                 }
             },
+            preventEncryptionScopeOverride: {
+                serializedName: "DenyEncryptionScopeOverride",
+                xmlName: "DenyEncryptionScopeOverride",
+                type: {
+                    name: "Boolean"
+                }
+            },
             deletedOn: {
-                xmlName: "DeletedTime",
                 serializedName: "DeletedTime",
+                xmlName: "DeletedTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             remainingRetentionDays: {
-                xmlName: "RemainingRetentionDays",
                 serializedName: "RemainingRetentionDays",
+                xmlName: "RemainingRetentionDays",
                 type: {
                     name: "Number"
                 }
             },
-            accessTier: {
-                xmlName: "AccessTier",
-                serializedName: "AccessTier",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierInferred: {
-                xmlName: "AccessTierInferred",
-                serializedName: "AccessTierInferred",
+            isImmutableStorageWithVersioningEnabled: {
+                serializedName: "ImmutableStorageWithVersioningEnabled",
+                xmlName: "ImmutableStorageWithVersioningEnabled",
                 type: {
                     name: "Boolean"
                 }
-            },
-            archiveStatus: {
-                xmlName: "ArchiveStatus",
-                serializedName: "ArchiveStatus",
+            }
+        }
+    }
+};
+const KeyInfo = {
+    serializedName: "KeyInfo",
+    type: {
+        name: "Composite",
+        className: "KeyInfo",
+        modelProperties: {
+            startsOn: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
                 type: {
                     name: "String"
                 }
             },
-            customerProvidedKeySha256: {
-                xmlName: "CustomerProvidedKeySha256",
-                serializedName: "CustomerProvidedKeySha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                xmlName: "EncryptionScope",
-                serializedName: "EncryptionScope",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierChangedOn: {
-                xmlName: "AccessTierChangeTime",
-                serializedName: "AccessTierChangeTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            tagCount: {
-                xmlName: "TagCount",
-                serializedName: "TagCount",
-                type: {
-                    name: "Number"
-                }
-            },
             expiresOn: {
-                xmlName: "Expiry-Time",
-                serializedName: "Expiry-Time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isSealed: {
-                xmlName: "Sealed",
-                serializedName: "Sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            rehydratePriority: {
-                xmlName: "RehydratePriority",
-                serializedName: "RehydratePriority",
+                serializedName: "Expiry",
+                required: true,
+                xmlName: "Expiry",
                 type: {
                     name: "String"
                 }
@@ -10160,25 +10278,64 @@ var BlobPropertiesInternal = {
         }
     }
 };
-var BlobTag = {
-    xmlName: "Tag",
-    serializedName: "BlobTag",
+const UserDelegationKey = {
+    serializedName: "UserDelegationKey",
     type: {
         name: "Composite",
-        className: "BlobTag",
+        className: "UserDelegationKey",
         modelProperties: {
-            key: {
-                xmlName: "Key",
+            signedObjectId: {
+                serializedName: "SignedOid",
                 required: true,
-                serializedName: "Key",
+                xmlName: "SignedOid",
+                type: {
+                    name: "String"
+                }
+            },
+            signedTenantId: {
+                serializedName: "SignedTid",
+                required: true,
+                xmlName: "SignedTid",
+                type: {
+                    name: "String"
+                }
+            },
+            signedStartsOn: {
+                serializedName: "SignedStart",
+                required: true,
+                xmlName: "SignedStart",
+                type: {
+                    name: "String"
+                }
+            },
+            signedExpiresOn: {
+                serializedName: "SignedExpiry",
+                required: true,
+                xmlName: "SignedExpiry",
+                type: {
+                    name: "String"
+                }
+            },
+            signedService: {
+                serializedName: "SignedService",
+                required: true,
+                xmlName: "SignedService",
+                type: {
+                    name: "String"
+                }
+            },
+            signedVersion: {
+                serializedName: "SignedVersion",
+                required: true,
+                xmlName: "SignedVersion",
                 type: {
                     name: "String"
                 }
             },
             value: {
-                xmlName: "Value",
-                required: true,
                 serializedName: "Value",
+                required: true,
+                xmlName: "Value",
                 type: {
                     name: "String"
                 }
@@ -10186,19 +10343,103 @@ var BlobTag = {
         }
     }
 };
-var BlobTags = {
-    xmlName: "Tags",
+const FilterBlobSegment = {
+    serializedName: "FilterBlobSegment",
+    xmlName: "EnumerationResults",
+    type: {
+        name: "Composite",
+        className: "FilterBlobSegment",
+        modelProperties: {
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
+                required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
+                type: {
+                    name: "String"
+                }
+            },
+            where: {
+                serializedName: "Where",
+                required: true,
+                xmlName: "Where",
+                type: {
+                    name: "String"
+                }
+            },
+            blobs: {
+                serializedName: "Blobs",
+                required: true,
+                xmlName: "Blobs",
+                xmlIsWrapped: true,
+                xmlElementName: "Blob",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "FilterBlobItem"
+                        }
+                    }
+                }
+            },
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const FilterBlobItem = {
+    serializedName: "FilterBlobItem",
+    xmlName: "Blob",
+    type: {
+        name: "Composite",
+        className: "FilterBlobItem",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            },
+            containerName: {
+                serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                type: {
+                    name: "String"
+                }
+            },
+            tags: {
+                serializedName: "Tags",
+                xmlName: "Tags",
+                type: {
+                    name: "Composite",
+                    className: "BlobTags"
+                }
+            }
+        }
+    }
+};
+const BlobTags = {
     serializedName: "BlobTags",
+    xmlName: "Tags",
     type: {
         name: "Composite",
         className: "BlobTags",
         modelProperties: {
             blobTagSet: {
-                xmlIsWrapped: true,
-                xmlName: "TagSet",
-                xmlElementName: "Tag",
-                required: true,
                 serializedName: "BlobTagSet",
+                required: true,
+                xmlName: "TagSet",
+                xmlIsWrapped: true,
+                xmlElementName: "Tag",
                 type: {
                     name: "Sequence",
                     element: {
@@ -10212,178 +10453,145 @@ var BlobTags = {
         }
     }
 };
-var BlobItemInternal = {
-    xmlName: "Blob",
-    serializedName: "BlobItemInternal",
+const BlobTag = {
+    serializedName: "BlobTag",
+    xmlName: "Tag",
     type: {
         name: "Composite",
-        className: "BlobItemInternal",
+        className: "BlobTag",
         modelProperties: {
-            name: {
-                xmlName: "Name",
+            key: {
+                serializedName: "Key",
                 required: true,
-                serializedName: "Name",
+                xmlName: "Key",
                 type: {
                     name: "String"
                 }
             },
-            deleted: {
-                xmlName: "Deleted",
+            value: {
+                serializedName: "Value",
                 required: true,
-                serializedName: "Deleted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            snapshot: {
-                xmlName: "Snapshot",
-                required: true,
-                serializedName: "Snapshot",
+                xmlName: "Value",
                 type: {
                     name: "String"
                 }
-            },
-            versionId: {
-                xmlName: "VersionId",
-                serializedName: "VersionId",
-                type: {
-                    name: "String"
-                }
-            },
-            isCurrentVersion: {
-                xmlName: "IsCurrentVersion",
-                serializedName: "IsCurrentVersion",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            properties: {
-                xmlName: "Properties",
-                required: true,
-                serializedName: "Properties",
-                type: {
-                    name: "Composite",
-                    className: "BlobPropertiesInternal"
-                }
-            },
-            metadata: {
-                xmlName: "Metadata",
-                serializedName: "Metadata",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            blobTags: {
-                xmlName: "Tags",
-                serializedName: "BlobTags",
-                type: {
-                    name: "Composite",
-                    className: "BlobTags"
-                }
-            },
-            objectReplicationMetadata: {
-                xmlName: "OrMetadata",
-                serializedName: "ObjectReplicationMetadata",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
             }
         }
     }
 };
-var BlobFlatListSegment = {
-    xmlName: "Blobs",
-    serializedName: "BlobFlatListSegment",
+const SignedIdentifier = {
+    serializedName: "SignedIdentifier",
+    xmlName: "SignedIdentifier",
     type: {
         name: "Composite",
-        className: "BlobFlatListSegment",
+        className: "SignedIdentifier",
         modelProperties: {
-            blobItems: {
-                xmlName: "BlobItems",
-                xmlElementName: "Blob",
+            id: {
+                serializedName: "Id",
                 required: true,
-                serializedName: "BlobItems",
+                xmlName: "Id",
                 type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "BlobItemInternal"
-                        }
-                    }
+                    name: "String"
+                }
+            },
+            accessPolicy: {
+                serializedName: "AccessPolicy",
+                xmlName: "AccessPolicy",
+                type: {
+                    name: "Composite",
+                    className: "AccessPolicy"
                 }
             }
         }
     }
 };
-var ListBlobsFlatSegmentResponse = {
-    xmlName: "EnumerationResults",
+const AccessPolicy = {
+    serializedName: "AccessPolicy",
+    type: {
+        name: "Composite",
+        className: "AccessPolicy",
+        modelProperties: {
+            startsOn: {
+                serializedName: "Start",
+                xmlName: "Start",
+                type: {
+                    name: "String"
+                }
+            },
+            expiresOn: {
+                serializedName: "Expiry",
+                xmlName: "Expiry",
+                type: {
+                    name: "String"
+                }
+            },
+            permissions: {
+                serializedName: "Permission",
+                xmlName: "Permission",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ListBlobsFlatSegmentResponse = {
     serializedName: "ListBlobsFlatSegmentResponse",
+    xmlName: "EnumerationResults",
     type: {
         name: "Composite",
         className: "ListBlobsFlatSegmentResponse",
         modelProperties: {
             serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
                 serializedName: "ServiceEndpoint",
+                required: true,
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
             containerName: {
-                xmlIsAttribute: true,
-                xmlName: "ContainerName",
-                required: true,
                 serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
             prefix: {
-                xmlName: "Prefix",
                 serializedName: "Prefix",
+                xmlName: "Prefix",
                 type: {
                     name: "String"
                 }
             },
             marker: {
-                xmlName: "Marker",
                 serializedName: "Marker",
+                xmlName: "Marker",
                 type: {
                     name: "String"
                 }
             },
             maxPageSize: {
-                xmlName: "MaxResults",
                 serializedName: "MaxResults",
+                xmlName: "MaxResults",
                 type: {
                     name: "Number"
                 }
             },
             segment: {
-                xmlName: "Blobs",
-                required: true,
                 serializedName: "Segment",
+                xmlName: "Blobs",
                 type: {
                     name: "Composite",
                     className: "BlobFlatListSegment"
                 }
             },
             continuationToken: {
-                xmlName: "NextMarker",
                 serializedName: "NextMarker",
+                xmlName: "NextMarker",
                 type: {
                     name: "String"
                 }
@@ -10391,49 +10599,18 @@ var ListBlobsFlatSegmentResponse = {
         }
     }
 };
-var BlobPrefix = {
-    serializedName: "BlobPrefix",
-    type: {
-        name: "Composite",
-        className: "BlobPrefix",
-        modelProperties: {
-            name: {
-                xmlName: "Name",
-                required: true,
-                serializedName: "Name",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobHierarchyListSegment = {
+const BlobFlatListSegment = {
+    serializedName: "BlobFlatListSegment",
     xmlName: "Blobs",
-    serializedName: "BlobHierarchyListSegment",
     type: {
         name: "Composite",
-        className: "BlobHierarchyListSegment",
+        className: "BlobFlatListSegment",
         modelProperties: {
-            blobPrefixes: {
-                xmlName: "BlobPrefixes",
-                xmlElementName: "BlobPrefix",
-                serializedName: "BlobPrefixes",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "BlobPrefix"
-                        }
-                    }
-                }
-            },
             blobItems: {
+                serializedName: "BlobItems",
+                required: true,
                 xmlName: "BlobItems",
                 xmlElementName: "Blob",
-                required: true,
-                serializedName: "BlobItems",
                 type: {
                     name: "Sequence",
                     element: {
@@ -10447,227 +10624,198 @@ var BlobHierarchyListSegment = {
         }
     }
 };
-var ListBlobsHierarchySegmentResponse = {
-    xmlName: "EnumerationResults",
-    serializedName: "ListBlobsHierarchySegmentResponse",
+const BlobItemInternal = {
+    serializedName: "BlobItemInternal",
+    xmlName: "Blob",
     type: {
         name: "Composite",
-        className: "ListBlobsHierarchySegmentResponse",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            containerName: {
-                xmlIsAttribute: true,
-                xmlName: "ContainerName",
-                required: true,
-                serializedName: "ContainerName",
-                type: {
-                    name: "String"
-                }
-            },
-            prefix: {
-                xmlName: "Prefix",
-                serializedName: "Prefix",
-                type: {
-                    name: "String"
-                }
-            },
-            marker: {
-                xmlName: "Marker",
-                serializedName: "Marker",
-                type: {
-                    name: "String"
-                }
-            },
-            maxPageSize: {
-                xmlName: "MaxResults",
-                serializedName: "MaxResults",
-                type: {
-                    name: "Number"
-                }
-            },
-            delimiter: {
-                xmlName: "Delimiter",
-                serializedName: "Delimiter",
-                type: {
-                    name: "String"
-                }
-            },
-            segment: {
-                xmlName: "Blobs",
-                required: true,
-                serializedName: "Segment",
-                type: {
-                    name: "Composite",
-                    className: "BlobHierarchyListSegment"
-                }
-            },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var Block = {
-    serializedName: "Block",
-    type: {
-        name: "Composite",
-        className: "Block",
+        className: "BlobItemInternal",
         modelProperties: {
             name: {
-                xmlName: "Name",
-                required: true,
                 serializedName: "Name",
+                required: true,
+                xmlName: "Name",
                 type: {
                     name: "String"
                 }
             },
-            size: {
-                xmlName: "Size",
+            deleted: {
+                serializedName: "Deleted",
                 required: true,
-                serializedName: "Size",
+                xmlName: "Deleted",
                 type: {
-                    name: "Number"
+                    name: "Boolean"
+                }
+            },
+            snapshot: {
+                serializedName: "Snapshot",
+                required: true,
+                xmlName: "Snapshot",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "VersionId",
+                xmlName: "VersionId",
+                type: {
+                    name: "String"
+                }
+            },
+            isCurrentVersion: {
+                serializedName: "IsCurrentVersion",
+                xmlName: "IsCurrentVersion",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            properties: {
+                serializedName: "Properties",
+                xmlName: "Properties",
+                type: {
+                    name: "Composite",
+                    className: "BlobPropertiesInternal"
+                }
+            },
+            metadata: {
+                serializedName: "Metadata",
+                xmlName: "Metadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            },
+            blobTags: {
+                serializedName: "BlobTags",
+                xmlName: "Tags",
+                type: {
+                    name: "Composite",
+                    className: "BlobTags"
+                }
+            },
+            objectReplicationMetadata: {
+                serializedName: "ObjectReplicationMetadata",
+                xmlName: "OrMetadata",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                }
+            },
+            hasVersionsOnly: {
+                serializedName: "HasVersionsOnly",
+                xmlName: "HasVersionsOnly",
+                type: {
+                    name: "Boolean"
                 }
             }
         }
     }
 };
-var BlockList = {
-    serializedName: "BlockList",
+const BlobPropertiesInternal = {
+    serializedName: "BlobPropertiesInternal",
+    xmlName: "Properties",
     type: {
         name: "Composite",
-        className: "BlockList",
+        className: "BlobPropertiesInternal",
         modelProperties: {
-            committedBlocks: {
-                xmlIsWrapped: true,
-                xmlName: "CommittedBlocks",
-                xmlElementName: "Block",
-                serializedName: "CommittedBlocks",
+            createdOn: {
+                serializedName: "Creation-Time",
+                xmlName: "Creation-Time",
                 type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "Block"
-                        }
-                    }
+                    name: "DateTimeRfc1123"
                 }
             },
-            uncommittedBlocks: {
-                xmlIsWrapped: true,
-                xmlName: "UncommittedBlocks",
-                xmlElementName: "Block",
-                serializedName: "UncommittedBlocks",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "Block"
-                        }
-                    }
-                }
-            }
-        }
-    }
-};
-var BlockLookupList = {
-    xmlName: "BlockList",
-    serializedName: "BlockLookupList",
-    type: {
-        name: "Composite",
-        className: "BlockLookupList",
-        modelProperties: {
-            committed: {
-                xmlName: "Committed",
-                xmlElementName: "Committed",
-                serializedName: "Committed",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            uncommitted: {
-                xmlName: "Uncommitted",
-                xmlElementName: "Uncommitted",
-                serializedName: "Uncommitted",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            },
-            latest: {
-                xmlName: "Latest",
-                xmlElementName: "Latest",
-                serializedName: "Latest",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                }
-            }
-        }
-    }
-};
-var ContainerProperties = {
-    serializedName: "ContainerProperties",
-    type: {
-        name: "Composite",
-        className: "ContainerProperties",
-        modelProperties: {
             lastModified: {
-                xmlName: "Last-Modified",
-                required: true,
                 serializedName: "Last-Modified",
+                required: true,
+                xmlName: "Last-Modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             etag: {
-                xmlName: "Etag",
-                required: true,
                 serializedName: "Etag",
+                required: true,
+                xmlName: "Etag",
                 type: {
                     name: "String"
                 }
             },
-            leaseStatus: {
-                xmlName: "LeaseStatus",
-                serializedName: "LeaseStatus",
+            contentLength: {
+                serializedName: "Content-Length",
+                xmlName: "Content-Length",
+                type: {
+                    name: "Number"
+                }
+            },
+            contentType: {
+                serializedName: "Content-Type",
+                xmlName: "Content-Type",
+                type: {
+                    name: "String"
+                }
+            },
+            contentEncoding: {
+                serializedName: "Content-Encoding",
+                xmlName: "Content-Encoding",
+                type: {
+                    name: "String"
+                }
+            },
+            contentLanguage: {
+                serializedName: "Content-Language",
+                xmlName: "Content-Language",
+                type: {
+                    name: "String"
+                }
+            },
+            contentMD5: {
+                serializedName: "Content-MD5",
+                xmlName: "Content-MD5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            contentDisposition: {
+                serializedName: "Content-Disposition",
+                xmlName: "Content-Disposition",
+                type: {
+                    name: "String"
+                }
+            },
+            cacheControl: {
+                serializedName: "Cache-Control",
+                xmlName: "Cache-Control",
+                type: {
+                    name: "String"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            blobType: {
+                serializedName: "BlobType",
+                xmlName: "BlobType",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
+                }
+            },
+            leaseStatus: {
+                serializedName: "LeaseStatus",
+                xmlName: "LeaseStatus",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             leaseState: {
-                xmlName: "LeaseState",
                 serializedName: "LeaseState",
+                xmlName: "LeaseState",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -10680,112 +10828,381 @@ var ContainerProperties = {
                 }
             },
             leaseDuration: {
-                xmlName: "LeaseDuration",
                 serializedName: "LeaseDuration",
+                xmlName: "LeaseDuration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
-            publicAccess: {
-                xmlName: "PublicAccess",
-                serializedName: "PublicAccess",
+            copyId: {
+                serializedName: "CopyId",
+                xmlName: "CopyId",
                 type: {
                     name: "String"
                 }
             },
-            hasImmutabilityPolicy: {
-                xmlName: "HasImmutabilityPolicy",
-                serializedName: "HasImmutabilityPolicy",
+            copyStatus: {
+                serializedName: "CopyStatus",
+                xmlName: "CopyStatus",
                 type: {
-                    name: "Boolean"
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
-            hasLegalHold: {
-                xmlName: "HasLegalHold",
-                serializedName: "HasLegalHold",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            defaultEncryptionScope: {
-                xmlName: "DefaultEncryptionScope",
-                serializedName: "DefaultEncryptionScope",
+            copySource: {
+                serializedName: "CopySource",
+                xmlName: "CopySource",
                 type: {
                     name: "String"
                 }
             },
-            preventEncryptionScopeOverride: {
-                xmlName: "DenyEncryptionScopeOverride",
-                serializedName: "DenyEncryptionScopeOverride",
+            copyProgress: {
+                serializedName: "CopyProgress",
+                xmlName: "CopyProgress",
+                type: {
+                    name: "String"
+                }
+            },
+            copyCompletedOn: {
+                serializedName: "CopyCompletionTime",
+                xmlName: "CopyCompletionTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyStatusDescription: {
+                serializedName: "CopyStatusDescription",
+                xmlName: "CopyStatusDescription",
+                type: {
+                    name: "String"
+                }
+            },
+            serverEncrypted: {
+                serializedName: "ServerEncrypted",
+                xmlName: "ServerEncrypted",
                 type: {
                     name: "Boolean"
                 }
             },
+            incrementalCopy: {
+                serializedName: "IncrementalCopy",
+                xmlName: "IncrementalCopy",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            destinationSnapshot: {
+                serializedName: "DestinationSnapshot",
+                xmlName: "DestinationSnapshot",
+                type: {
+                    name: "String"
+                }
+            },
             deletedOn: {
-                xmlName: "DeletedTime",
                 serializedName: "DeletedTime",
+                xmlName: "DeletedTime",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             remainingRetentionDays: {
-                xmlName: "RemainingRetentionDays",
                 serializedName: "RemainingRetentionDays",
+                xmlName: "RemainingRetentionDays",
                 type: {
                     name: "Number"
                 }
+            },
+            accessTier: {
+                serializedName: "AccessTier",
+                xmlName: "AccessTier",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "P4",
+                        "P6",
+                        "P10",
+                        "P15",
+                        "P20",
+                        "P30",
+                        "P40",
+                        "P50",
+                        "P60",
+                        "P70",
+                        "P80",
+                        "Hot",
+                        "Cool",
+                        "Archive"
+                    ]
+                }
+            },
+            accessTierInferred: {
+                serializedName: "AccessTierInferred",
+                xmlName: "AccessTierInferred",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            archiveStatus: {
+                serializedName: "ArchiveStatus",
+                xmlName: "ArchiveStatus",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "rehydrate-pending-to-hot",
+                        "rehydrate-pending-to-cool"
+                    ]
+                }
+            },
+            customerProvidedKeySha256: {
+                serializedName: "CustomerProvidedKeySha256",
+                xmlName: "CustomerProvidedKeySha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "EncryptionScope",
+                xmlName: "EncryptionScope",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierChangedOn: {
+                serializedName: "AccessTierChangeTime",
+                xmlName: "AccessTierChangeTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            tagCount: {
+                serializedName: "TagCount",
+                xmlName: "TagCount",
+                type: {
+                    name: "Number"
+                }
+            },
+            expiresOn: {
+                serializedName: "Expiry-Time",
+                xmlName: "Expiry-Time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isSealed: {
+                serializedName: "Sealed",
+                xmlName: "Sealed",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            rehydratePriority: {
+                serializedName: "RehydratePriority",
+                xmlName: "RehydratePriority",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["High", "Standard"]
+                }
+            },
+            lastAccessedOn: {
+                serializedName: "LastAccessTime",
+                xmlName: "LastAccessTime",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "ImmutabilityPolicyUntilDate",
+                xmlName: "ImmutabilityPolicyUntilDate",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "ImmutabilityPolicyMode",
+                xmlName: "ImmutabilityPolicyMode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "LegalHold",
+                xmlName: "LegalHold",
+                type: {
+                    name: "Boolean"
+                }
             }
         }
     }
 };
-var ContainerItem = {
-    xmlName: "Container",
-    serializedName: "ContainerItem",
+const ListBlobsHierarchySegmentResponse = {
+    serializedName: "ListBlobsHierarchySegmentResponse",
+    xmlName: "EnumerationResults",
     type: {
         name: "Composite",
-        className: "ContainerItem",
+        className: "ListBlobsHierarchySegmentResponse",
         modelProperties: {
-            name: {
-                xmlName: "Name",
+            serviceEndpoint: {
+                serializedName: "ServiceEndpoint",
                 required: true,
-                serializedName: "Name",
+                xmlName: "ServiceEndpoint",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
-            deleted: {
-                xmlName: "Deleted",
-                serializedName: "Deleted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            version: {
-                xmlName: "Version",
-                serializedName: "Version",
+            containerName: {
+                serializedName: "ContainerName",
+                required: true,
+                xmlName: "ContainerName",
+                xmlIsAttribute: true,
                 type: {
                     name: "String"
                 }
             },
-            properties: {
-                xmlName: "Properties",
-                required: true,
-                serializedName: "Properties",
+            prefix: {
+                serializedName: "Prefix",
+                xmlName: "Prefix",
+                type: {
+                    name: "String"
+                }
+            },
+            marker: {
+                serializedName: "Marker",
+                xmlName: "Marker",
+                type: {
+                    name: "String"
+                }
+            },
+            maxPageSize: {
+                serializedName: "MaxResults",
+                xmlName: "MaxResults",
+                type: {
+                    name: "Number"
+                }
+            },
+            delimiter: {
+                serializedName: "Delimiter",
+                xmlName: "Delimiter",
+                type: {
+                    name: "String"
+                }
+            },
+            segment: {
+                serializedName: "Segment",
+                xmlName: "Blobs",
                 type: {
                     name: "Composite",
-                    className: "ContainerProperties"
+                    className: "BlobHierarchyListSegment"
                 }
             },
-            metadata: {
-                xmlName: "Metadata",
-                serializedName: "Metadata",
+            continuationToken: {
+                serializedName: "NextMarker",
+                xmlName: "NextMarker",
                 type: {
-                    name: "Dictionary",
-                    value: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobHierarchyListSegment = {
+    serializedName: "BlobHierarchyListSegment",
+    xmlName: "Blobs",
+    type: {
+        name: "Composite",
+        className: "BlobHierarchyListSegment",
+        modelProperties: {
+            blobPrefixes: {
+                serializedName: "BlobPrefixes",
+                xmlName: "BlobPrefixes",
+                xmlElementName: "BlobPrefix",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "BlobPrefix"
+                        }
+                    }
+                }
+            },
+            blobItems: {
+                serializedName: "BlobItems",
+                required: true,
+                xmlName: "BlobItems",
+                xmlElementName: "Blob",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "BlobItemInternal"
+                        }
+                    }
+                }
+            }
+        }
+    }
+};
+const BlobPrefix = {
+    serializedName: "BlobPrefix",
+    type: {
+        name: "Composite",
+        className: "BlobPrefix",
+        modelProperties: {
+            name: {
+                serializedName: "Name",
+                required: true,
+                xmlName: "Name",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockLookupList = {
+    serializedName: "BlockLookupList",
+    xmlName: "BlockList",
+    type: {
+        name: "Composite",
+        className: "BlockLookupList",
+        modelProperties: {
+            committed: {
+                serializedName: "Committed",
+                xmlName: "Committed",
+                xmlElementName: "Committed",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "String"
+                        }
+                    }
+                }
+            },
+            uncommitted: {
+                serializedName: "Uncommitted",
+                xmlName: "Uncommitted",
+                xmlElementName: "Uncommitted",
+                type: {
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "String"
+                        }
+                    }
+                }
+            },
+            latest: {
+                serializedName: "Latest",
+                xmlName: "Latest",
+                xmlElementName: "Latest",
+                type: {
+                    name: "Sequence",
+                    element: {
                         type: {
                             name: "String"
                         }
@@ -10795,316 +11212,63 @@ var ContainerItem = {
         }
     }
 };
-var DelimitedTextConfiguration = {
-    serializedName: "DelimitedTextConfiguration",
+const BlockList = {
+    serializedName: "BlockList",
     type: {
         name: "Composite",
-        className: "DelimitedTextConfiguration",
+        className: "BlockList",
         modelProperties: {
-            columnSeparator: {
-                xmlName: "ColumnSeparator",
-                required: true,
-                serializedName: "ColumnSeparator",
-                type: {
-                    name: "String"
-                }
-            },
-            fieldQuote: {
-                xmlName: "FieldQuote",
-                required: true,
-                serializedName: "FieldQuote",
-                type: {
-                    name: "String"
-                }
-            },
-            recordSeparator: {
-                xmlName: "RecordSeparator",
-                required: true,
-                serializedName: "RecordSeparator",
-                type: {
-                    name: "String"
-                }
-            },
-            escapeChar: {
-                xmlName: "EscapeChar",
-                required: true,
-                serializedName: "EscapeChar",
-                type: {
-                    name: "String"
-                }
-            },
-            headersPresent: {
-                xmlName: "HasHeaders",
-                required: true,
-                serializedName: "HeadersPresent",
-                type: {
-                    name: "Boolean"
-                }
-            }
-        }
-    }
-};
-var JsonTextConfiguration = {
-    serializedName: "JsonTextConfiguration",
-    type: {
-        name: "Composite",
-        className: "JsonTextConfiguration",
-        modelProperties: {
-            recordSeparator: {
-                xmlName: "RecordSeparator",
-                required: true,
-                serializedName: "RecordSeparator",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var ListContainersSegmentResponse = {
-    xmlName: "EnumerationResults",
-    serializedName: "ListContainersSegmentResponse",
-    type: {
-        name: "Composite",
-        className: "ListContainersSegmentResponse",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            prefix: {
-                xmlName: "Prefix",
-                serializedName: "Prefix",
-                type: {
-                    name: "String"
-                }
-            },
-            marker: {
-                xmlName: "Marker",
-                serializedName: "Marker",
-                type: {
-                    name: "String"
-                }
-            },
-            maxPageSize: {
-                xmlName: "MaxResults",
-                serializedName: "MaxResults",
-                type: {
-                    name: "Number"
-                }
-            },
-            containerItems: {
+            committedBlocks: {
+                serializedName: "CommittedBlocks",
+                xmlName: "CommittedBlocks",
                 xmlIsWrapped: true,
-                xmlName: "Containers",
-                xmlElementName: "Container",
-                required: true,
-                serializedName: "ContainerItems",
+                xmlElementName: "Block",
                 type: {
                     name: "Sequence",
                     element: {
                         type: {
                             name: "Composite",
-                            className: "ContainerItem"
+                            className: "Block"
                         }
                     }
                 }
             },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
+            uncommittedBlocks: {
+                serializedName: "UncommittedBlocks",
+                xmlName: "UncommittedBlocks",
+                xmlIsWrapped: true,
+                xmlElementName: "Block",
                 type: {
-                    name: "String"
+                    name: "Sequence",
+                    element: {
+                        type: {
+                            name: "Composite",
+                            className: "Block"
+                        }
+                    }
                 }
             }
         }
     }
 };
-var CorsRule = {
-    serializedName: "CorsRule",
+const Block = {
+    serializedName: "Block",
     type: {
         name: "Composite",
-        className: "CorsRule",
-        modelProperties: {
-            allowedOrigins: {
-                xmlName: "AllowedOrigins",
-                required: true,
-                serializedName: "AllowedOrigins",
-                type: {
-                    name: "String"
-                }
-            },
-            allowedMethods: {
-                xmlName: "AllowedMethods",
-                required: true,
-                serializedName: "AllowedMethods",
-                type: {
-                    name: "String"
-                }
-            },
-            allowedHeaders: {
-                xmlName: "AllowedHeaders",
-                required: true,
-                serializedName: "AllowedHeaders",
-                type: {
-                    name: "String"
-                }
-            },
-            exposedHeaders: {
-                xmlName: "ExposedHeaders",
-                required: true,
-                serializedName: "ExposedHeaders",
-                type: {
-                    name: "String"
-                }
-            },
-            maxAgeInSeconds: {
-                xmlName: "MaxAgeInSeconds",
-                required: true,
-                serializedName: "MaxAgeInSeconds",
-                constraints: {
-                    InclusiveMinimum: 0
-                },
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var FilterBlobItem = {
-    xmlName: "Blob",
-    serializedName: "FilterBlobItem",
-    type: {
-        name: "Composite",
-        className: "FilterBlobItem",
+        className: "Block",
         modelProperties: {
             name: {
-                xmlName: "Name",
-                required: true,
                 serializedName: "Name",
+                required: true,
+                xmlName: "Name",
                 type: {
                     name: "String"
                 }
             },
-            containerName: {
-                xmlName: "ContainerName",
+            size: {
+                serializedName: "Size",
                 required: true,
-                serializedName: "ContainerName",
-                type: {
-                    name: "String"
-                }
-            },
-            tagValue: {
-                xmlName: "TagValue",
-                required: true,
-                serializedName: "TagValue",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var FilterBlobSegment = {
-    xmlName: "EnumerationResults",
-    serializedName: "FilterBlobSegment",
-    type: {
-        name: "Composite",
-        className: "FilterBlobSegment",
-        modelProperties: {
-            serviceEndpoint: {
-                xmlIsAttribute: true,
-                xmlName: "ServiceEndpoint",
-                required: true,
-                serializedName: "ServiceEndpoint",
-                type: {
-                    name: "String"
-                }
-            },
-            where: {
-                xmlName: "Where",
-                required: true,
-                serializedName: "Where",
-                type: {
-                    name: "String"
-                }
-            },
-            blobs: {
-                xmlIsWrapped: true,
-                xmlName: "Blobs",
-                xmlElementName: "Blob",
-                required: true,
-                serializedName: "Blobs",
-                type: {
-                    name: "Sequence",
-                    element: {
-                        type: {
-                            name: "Composite",
-                            className: "FilterBlobItem"
-                        }
-                    }
-                }
-            },
-            continuationToken: {
-                xmlName: "NextMarker",
-                serializedName: "NextMarker",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var GeoReplication = {
-    serializedName: "GeoReplication",
-    type: {
-        name: "Composite",
-        className: "GeoReplication",
-        modelProperties: {
-            status: {
-                xmlName: "Status",
-                required: true,
-                serializedName: "Status",
-                type: {
-                    name: "String"
-                }
-            },
-            lastSyncOn: {
-                xmlName: "LastSyncTime",
-                required: true,
-                serializedName: "LastSyncTime",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            }
-        }
-    }
-};
-var RetentionPolicy = {
-    serializedName: "RetentionPolicy",
-    type: {
-        name: "Composite",
-        className: "RetentionPolicy",
-        modelProperties: {
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            days: {
-                xmlName: "Days",
-                serializedName: "Days",
-                constraints: {
-                    InclusiveMinimum: 1
-                },
+                xmlName: "Size",
                 type: {
                     name: "Number"
                 }
@@ -11112,155 +11276,16 @@ var RetentionPolicy = {
         }
     }
 };
-var Logging = {
-    serializedName: "Logging",
-    type: {
-        name: "Composite",
-        className: "Logging",
-        modelProperties: {
-            version: {
-                xmlName: "Version",
-                required: true,
-                serializedName: "Version",
-                type: {
-                    name: "String"
-                }
-            },
-            deleteProperty: {
-                xmlName: "Delete",
-                required: true,
-                serializedName: "Delete",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            read: {
-                xmlName: "Read",
-                required: true,
-                serializedName: "Read",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            write: {
-                xmlName: "Write",
-                required: true,
-                serializedName: "Write",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            retentionPolicy: {
-                xmlName: "RetentionPolicy",
-                required: true,
-                serializedName: "RetentionPolicy",
-                type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
-                }
-            }
-        }
-    }
-};
-var Metrics = {
-    serializedName: "Metrics",
-    type: {
-        name: "Composite",
-        className: "Metrics",
-        modelProperties: {
-            version: {
-                xmlName: "Version",
-                serializedName: "Version",
-                type: {
-                    name: "String"
-                }
-            },
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            includeAPIs: {
-                xmlName: "IncludeAPIs",
-                serializedName: "IncludeAPIs",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            retentionPolicy: {
-                xmlName: "RetentionPolicy",
-                serializedName: "RetentionPolicy",
-                type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
-                }
-            }
-        }
-    }
-};
-var PageRange = {
-    serializedName: "PageRange",
-    type: {
-        name: "Composite",
-        className: "PageRange",
-        modelProperties: {
-            start: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
-                type: {
-                    name: "Number"
-                }
-            },
-            end: {
-                xmlName: "End",
-                required: true,
-                serializedName: "End",
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var ClearRange = {
-    serializedName: "ClearRange",
-    type: {
-        name: "Composite",
-        className: "ClearRange",
-        modelProperties: {
-            start: {
-                xmlName: "Start",
-                required: true,
-                serializedName: "Start",
-                type: {
-                    name: "Number"
-                }
-            },
-            end: {
-                xmlName: "End",
-                required: true,
-                serializedName: "End",
-                type: {
-                    name: "Number"
-                }
-            }
-        }
-    }
-};
-var PageList = {
+const PageList = {
     serializedName: "PageList",
     type: {
         name: "Composite",
         className: "PageList",
         modelProperties: {
             pageRange: {
+                serializedName: "PageRange",
                 xmlName: "PageRange",
                 xmlElementName: "PageRange",
-                serializedName: "PageRange",
                 type: {
                     name: "Sequence",
                     element: {
@@ -11272,9 +11297,9 @@ var PageList = {
                 }
             },
             clearRange: {
+                serializedName: "ClearRange",
                 xmlName: "ClearRange",
                 xmlElementName: "ClearRange",
-                serializedName: "ClearRange",
                 type: {
                     name: "Sequence",
                     element: {
@@ -11288,52 +11313,109 @@ var PageList = {
         }
     }
 };
-var QueryFormat = {
-    serializedName: "QueryFormat",
+const PageRange = {
+    serializedName: "PageRange",
+    xmlName: "PageRange",
     type: {
         name: "Composite",
-        className: "QueryFormat",
+        className: "PageRange",
         modelProperties: {
-            type: {
-                xmlName: "Type",
-                serializedName: "Type",
+            start: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "delimited",
-                        "json"
-                    ]
+                    name: "Number"
                 }
             },
-            delimitedTextConfiguration: {
-                xmlName: "DelimitedTextConfiguration",
-                serializedName: "DelimitedTextConfiguration",
+            end: {
+                serializedName: "End",
+                required: true,
+                xmlName: "End",
                 type: {
-                    name: "Composite",
-                    className: "DelimitedTextConfiguration"
-                }
-            },
-            jsonTextConfiguration: {
-                xmlName: "JsonTextConfiguration",
-                serializedName: "JsonTextConfiguration",
-                type: {
-                    name: "Composite",
-                    className: "JsonTextConfiguration"
+                    name: "Number"
                 }
             }
         }
     }
 };
-var QuerySerialization = {
+const ClearRange = {
+    serializedName: "ClearRange",
+    xmlName: "ClearRange",
+    type: {
+        name: "Composite",
+        className: "ClearRange",
+        modelProperties: {
+            start: {
+                serializedName: "Start",
+                required: true,
+                xmlName: "Start",
+                type: {
+                    name: "Number"
+                }
+            },
+            end: {
+                serializedName: "End",
+                required: true,
+                xmlName: "End",
+                type: {
+                    name: "Number"
+                }
+            }
+        }
+    }
+};
+const QueryRequest = {
+    serializedName: "QueryRequest",
+    xmlName: "QueryRequest",
+    type: {
+        name: "Composite",
+        className: "QueryRequest",
+        modelProperties: {
+            queryType: {
+                serializedName: "QueryType",
+                required: true,
+                xmlName: "QueryType",
+                type: {
+                    name: "String"
+                }
+            },
+            expression: {
+                serializedName: "Expression",
+                required: true,
+                xmlName: "Expression",
+                type: {
+                    name: "String"
+                }
+            },
+            inputSerialization: {
+                serializedName: "InputSerialization",
+                xmlName: "InputSerialization",
+                type: {
+                    name: "Composite",
+                    className: "QuerySerialization"
+                }
+            },
+            outputSerialization: {
+                serializedName: "OutputSerialization",
+                xmlName: "OutputSerialization",
+                type: {
+                    name: "Composite",
+                    className: "QuerySerialization"
+                }
+            }
+        }
+    }
+};
+const QuerySerialization = {
     serializedName: "QuerySerialization",
     type: {
         name: "Composite",
         className: "QuerySerialization",
         modelProperties: {
             format: {
-                xmlName: "Format",
-                required: true,
                 serializedName: "Format",
+                xmlName: "Format",
                 type: {
                     name: "Composite",
                     className: "QueryFormat"
@@ -11342,106 +11424,110 @@ var QuerySerialization = {
         }
     }
 };
-var QueryRequest = {
-    serializedName: "QueryRequest",
+const QueryFormat = {
+    serializedName: "QueryFormat",
     type: {
         name: "Composite",
-        className: "QueryRequest",
+        className: "QueryFormat",
         modelProperties: {
-            queryType: {
-                xmlName: "QueryType",
+            type: {
+                serializedName: "Type",
                 required: true,
-                isConstant: true,
-                serializedName: "QueryType",
-                defaultValue: 'SQL',
+                xmlName: "Type",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["delimited", "json", "arrow", "parquet"]
                 }
             },
-            expression: {
-                xmlName: "Expression",
-                required: true,
-                serializedName: "Expression",
-                type: {
-                    name: "String"
-                }
-            },
-            inputSerialization: {
-                xmlName: "InputSerialization",
-                serializedName: "InputSerialization",
+            delimitedTextConfiguration: {
+                serializedName: "DelimitedTextConfiguration",
+                xmlName: "DelimitedTextConfiguration",
                 type: {
                     name: "Composite",
-                    className: "QuerySerialization"
+                    className: "DelimitedTextConfiguration"
                 }
             },
-            outputSerialization: {
-                xmlName: "OutputSerialization",
-                serializedName: "OutputSerialization",
+            jsonTextConfiguration: {
+                serializedName: "JsonTextConfiguration",
+                xmlName: "JsonTextConfiguration",
                 type: {
                     name: "Composite",
-                    className: "QuerySerialization"
+                    className: "JsonTextConfiguration"
+                }
+            },
+            arrowConfiguration: {
+                serializedName: "ArrowConfiguration",
+                xmlName: "ArrowConfiguration",
+                type: {
+                    name: "Composite",
+                    className: "ArrowConfiguration"
+                }
+            },
+            parquetTextConfiguration: {
+                serializedName: "ParquetTextConfiguration",
+                xmlName: "ParquetTextConfiguration",
+                type: {
+                    name: "any"
                 }
             }
         }
     }
 };
-var SignedIdentifier = {
-    serializedName: "SignedIdentifier",
+const DelimitedTextConfiguration = {
+    serializedName: "DelimitedTextConfiguration",
+    xmlName: "DelimitedTextConfiguration",
     type: {
         name: "Composite",
-        className: "SignedIdentifier",
+        className: "DelimitedTextConfiguration",
         modelProperties: {
-            id: {
-                xmlName: "Id",
-                required: true,
-                serializedName: "Id",
+            columnSeparator: {
+                serializedName: "ColumnSeparator",
+                xmlName: "ColumnSeparator",
                 type: {
                     name: "String"
                 }
             },
-            accessPolicy: {
-                xmlName: "AccessPolicy",
-                required: true,
-                serializedName: "AccessPolicy",
+            fieldQuote: {
+                serializedName: "FieldQuote",
+                xmlName: "FieldQuote",
                 type: {
-                    name: "Composite",
-                    className: "AccessPolicy"
+                    name: "String"
                 }
-            }
-        }
-    }
-};
-var StaticWebsite = {
-    serializedName: "StaticWebsite",
-    type: {
-        name: "Composite",
-        className: "StaticWebsite",
-        modelProperties: {
-            enabled: {
-                xmlName: "Enabled",
-                required: true,
-                serializedName: "Enabled",
+            },
+            recordSeparator: {
+                serializedName: "RecordSeparator",
+                xmlName: "RecordSeparator",
+                type: {
+                    name: "String"
+                }
+            },
+            escapeChar: {
+                serializedName: "EscapeChar",
+                xmlName: "EscapeChar",
+                type: {
+                    name: "String"
+                }
+            },
+            headersPresent: {
+                serializedName: "HeadersPresent",
+                xmlName: "HasHeaders",
                 type: {
                     name: "Boolean"
                 }
-            },
-            indexDocument: {
-                xmlName: "IndexDocument",
-                serializedName: "IndexDocument",
-                type: {
-                    name: "String"
-                }
-            },
-            errorDocument404Path: {
-                xmlName: "ErrorDocument404Path",
-                serializedName: "ErrorDocument404Path",
-                type: {
-                    name: "String"
-                }
-            },
-            defaultIndexDocumentPath: {
-                xmlName: "DefaultIndexDocumentPath",
-                serializedName: "DefaultIndexDocumentPath",
+            }
+        }
+    }
+};
+const JsonTextConfiguration = {
+    serializedName: "JsonTextConfiguration",
+    xmlName: "JsonTextConfiguration",
+    type: {
+        name: "Composite",
+        className: "JsonTextConfiguration",
+        modelProperties: {
+            recordSeparator: {
+                serializedName: "RecordSeparator",
+                xmlName: "RecordSeparator",
                 type: {
                     name: "String"
                 }
@@ -11449,122 +11535,101 @@ var StaticWebsite = {
         }
     }
 };
-var BlobServiceProperties = {
-    xmlName: "StorageServiceProperties",
-    serializedName: "BlobServiceProperties",
+const ArrowConfiguration = {
+    serializedName: "ArrowConfiguration",
+    xmlName: "ArrowConfiguration",
     type: {
         name: "Composite",
-        className: "BlobServiceProperties",
+        className: "ArrowConfiguration",
         modelProperties: {
-            blobAnalyticsLogging: {
-                xmlName: "Logging",
-                serializedName: "Logging",
-                type: {
-                    name: "Composite",
-                    className: "Logging"
-                }
-            },
-            hourMetrics: {
-                xmlName: "HourMetrics",
-                serializedName: "HourMetrics",
-                type: {
-                    name: "Composite",
-                    className: "Metrics"
-                }
-            },
-            minuteMetrics: {
-                xmlName: "MinuteMetrics",
-                serializedName: "MinuteMetrics",
-                type: {
-                    name: "Composite",
-                    className: "Metrics"
-                }
-            },
-            cors: {
+            schema: {
+                serializedName: "Schema",
+                required: true,
+                xmlName: "Schema",
                 xmlIsWrapped: true,
-                xmlName: "Cors",
-                xmlElementName: "CorsRule",
-                serializedName: "Cors",
+                xmlElementName: "Field",
                 type: {
                     name: "Sequence",
                     element: {
                         type: {
                             name: "Composite",
-                            className: "CorsRule"
+                            className: "ArrowField"
                         }
                     }
                 }
-            },
-            defaultServiceVersion: {
-                xmlName: "DefaultServiceVersion",
-                serializedName: "DefaultServiceVersion",
+            }
+        }
+    }
+};
+const ArrowField = {
+    serializedName: "ArrowField",
+    xmlName: "Field",
+    type: {
+        name: "Composite",
+        className: "ArrowField",
+        modelProperties: {
+            type: {
+                serializedName: "Type",
+                required: true,
+                xmlName: "Type",
                 type: {
                     name: "String"
                 }
             },
-            deleteRetentionPolicy: {
-                xmlName: "DeleteRetentionPolicy",
-                serializedName: "DeleteRetentionPolicy",
+            name: {
+                serializedName: "Name",
+                xmlName: "Name",
                 type: {
-                    name: "Composite",
-                    className: "RetentionPolicy"
+                    name: "String"
                 }
             },
-            staticWebsite: {
-                xmlName: "StaticWebsite",
-                serializedName: "StaticWebsite",
+            precision: {
+                serializedName: "Precision",
+                xmlName: "Precision",
                 type: {
-                    name: "Composite",
-                    className: "StaticWebsite"
+                    name: "Number"
+                }
+            },
+            scale: {
+                serializedName: "Scale",
+                xmlName: "Scale",
+                type: {
+                    name: "Number"
                 }
             }
         }
     }
 };
-var BlobServiceStatistics = {
-    xmlName: "StorageServiceStats",
-    serializedName: "BlobServiceStatistics",
-    type: {
-        name: "Composite",
-        className: "BlobServiceStatistics",
-        modelProperties: {
-            geoReplication: {
-                xmlName: "GeoReplication",
-                serializedName: "GeoReplication",
-                type: {
-                    name: "Composite",
-                    className: "GeoReplication"
-                }
-            }
-        }
-    }
-};
-var ServiceSetPropertiesHeaders = {
-    serializedName: "service-setproperties-headers",
+const ServiceSetPropertiesHeaders = {
+    serializedName: "Service_setPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ServiceSetPropertiesHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11572,32 +11637,52 @@ var ServiceSetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetPropertiesHeaders = {
-    serializedName: "service-getproperties-headers",
+const ServiceSetPropertiesExceptionHeaders = {
+    serializedName: "Service_setPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceSetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetPropertiesHeaders = {
+    serializedName: "Service_getPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetPropertiesHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11605,38 +11690,59 @@ var ServiceGetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetStatisticsHeaders = {
-    serializedName: "service-getstatistics-headers",
+const ServiceGetPropertiesExceptionHeaders = {
+    serializedName: "Service_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetStatisticsHeaders = {
+    serializedName: "Service_getStatisticsHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetStatisticsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11644,32 +11750,52 @@ var ServiceGetStatisticsHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentHeaders = {
-    serializedName: "service-listcontainerssegment-headers",
+const ServiceGetStatisticsExceptionHeaders = {
+    serializedName: "Service_getStatisticsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetStatisticsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceListContainersSegmentHeaders = {
+    serializedName: "Service_listContainersSegmentHeaders",
     type: {
         name: "Composite",
         className: "ServiceListContainersSegmentHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11677,38 +11803,59 @@ var ServiceListContainersSegmentHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyHeaders = {
-    serializedName: "service-getuserdelegationkey-headers",
+const ServiceListContainersSegmentExceptionHeaders = {
+    serializedName: "Service_listContainersSegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceListContainersSegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetUserDelegationKeyHeaders = {
+    serializedName: "Service_getUserDelegationKeyHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetUserDelegationKeyHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11716,38 +11863,59 @@ var ServiceGetUserDelegationKeyHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoHeaders = {
-    serializedName: "service-getaccountinfo-headers",
+const ServiceGetUserDelegationKeyExceptionHeaders = {
+    serializedName: "Service_getUserDelegationKeyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetUserDelegationKeyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceGetAccountInfoHeaders = {
+    serializedName: "Service_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "ServiceGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11761,6 +11929,7 @@ var ServiceGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11772,8 +11941,16 @@ var ServiceGetAccountInfoHeaders = {
                     ]
                 }
             },
+            isHierarchicalNamespaceEnabled: {
+                serializedName: "x-ms-is-hns-enabled",
+                xmlName: "x-ms-is-hns-enabled",
+                type: {
+                    name: "Boolean"
+                }
+            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11781,38 +11958,59 @@ var ServiceGetAccountInfoHeaders = {
         }
     }
 };
-var ServiceSubmitBatchHeaders = {
-    serializedName: "service-submitbatch-headers",
+const ServiceGetAccountInfoExceptionHeaders = {
+    serializedName: "Service_getAccountInfoExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceGetAccountInfoExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceSubmitBatchHeaders = {
+    serializedName: "Service_submitBatchHeaders",
     type: {
         name: "Composite",
         className: "ServiceSubmitBatchHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11820,38 +12018,59 @@ var ServiceSubmitBatchHeaders = {
         }
     }
 };
-var ServiceFilterBlobsHeaders = {
-    serializedName: "service-filterblobs-headers",
+const ServiceSubmitBatchExceptionHeaders = {
+    serializedName: "Service_submitBatchExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceSubmitBatchExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ServiceFilterBlobsHeaders = {
+    serializedName: "Service_filterBlobsHeaders",
     type: {
         name: "Composite",
         className: "ServiceFilterBlobsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11859,50 +12078,73 @@ var ServiceFilterBlobsHeaders = {
         }
     }
 };
-var ContainerCreateHeaders = {
-    serializedName: "container-create-headers",
+const ServiceFilterBlobsExceptionHeaders = {
+    serializedName: "Service_filterBlobsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ServiceFilterBlobsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerCreateHeaders = {
+    serializedName: "Container_createHeaders",
     type: {
         name: "Composite",
         className: "ContainerCreateHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -11910,48 +12152,62 @@ var ContainerCreateHeaders = {
         }
     }
 };
-var ContainerGetPropertiesHeaders = {
-    serializedName: "container-getproperties-headers",
+const ContainerCreateExceptionHeaders = {
+    serializedName: "Container_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetPropertiesHeaders = {
+    serializedName: "Container_getPropertiesHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetPropertiesHeaders",
         modelProperties: {
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-meta-"
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -11965,70 +12221,86 @@ var ContainerGetPropertiesHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobPublicAccess: {
                 serializedName: "x-ms-blob-public-access",
+                xmlName: "x-ms-blob-public-access",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["container", "blob"]
                 }
             },
             hasImmutabilityPolicy: {
                 serializedName: "x-ms-has-immutability-policy",
+                xmlName: "x-ms-has-immutability-policy",
                 type: {
                     name: "Boolean"
                 }
             },
             hasLegalHold: {
                 serializedName: "x-ms-has-legal-hold",
+                xmlName: "x-ms-has-legal-hold",
                 type: {
                     name: "Boolean"
                 }
             },
             defaultEncryptionScope: {
                 serializedName: "x-ms-default-encryption-scope",
+                xmlName: "x-ms-default-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             denyEncryptionScopeOverride: {
                 serializedName: "x-ms-deny-encryption-scope-override",
+                xmlName: "x-ms-deny-encryption-scope-override",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            isImmutableStorageWithVersioningEnabled: {
+                serializedName: "x-ms-immutable-storage-with-versioning-enabled",
+                xmlName: "x-ms-immutable-storage-with-versioning-enabled",
                 type: {
                     name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12036,38 +12308,59 @@ var ContainerGetPropertiesHeaders = {
         }
     }
 };
-var ContainerDeleteHeaders = {
-    serializedName: "container-delete-headers",
+const ContainerGetPropertiesExceptionHeaders = {
+    serializedName: "Container_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerDeleteHeaders = {
+    serializedName: "Container_deleteHeaders",
     type: {
         name: "Composite",
         className: "ContainerDeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12075,50 +12368,73 @@ var ContainerDeleteHeaders = {
         }
     }
 };
-var ContainerSetMetadataHeaders = {
-    serializedName: "container-setmetadata-headers",
+const ContainerDeleteExceptionHeaders = {
+    serializedName: "Container_deleteExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerDeleteExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSetMetadataHeaders = {
+    serializedName: "Container_setMetadataHeaders",
     type: {
         name: "Composite",
         className: "ContainerSetMetadataHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12126,56 +12442,81 @@ var ContainerSetMetadataHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyHeaders = {
-    serializedName: "container-getaccesspolicy-headers",
+const ContainerSetMetadataExceptionHeaders = {
+    serializedName: "Container_setMetadataExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSetMetadataExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetAccessPolicyHeaders = {
+    serializedName: "Container_getAccessPolicyHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetAccessPolicyHeaders",
         modelProperties: {
             blobPublicAccess: {
                 serializedName: "x-ms-blob-public-access",
+                xmlName: "x-ms-blob-public-access",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["container", "blob"]
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12183,50 +12524,73 @@ var ContainerGetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyHeaders = {
-    serializedName: "container-setaccesspolicy-headers",
+const ContainerGetAccessPolicyExceptionHeaders = {
+    serializedName: "Container_getAccessPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetAccessPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSetAccessPolicyHeaders = {
+    serializedName: "Container_setAccessPolicyHeaders",
     type: {
         name: "Composite",
         className: "ContainerSetAccessPolicyHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12234,38 +12598,59 @@ var ContainerSetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerRestoreHeaders = {
-    serializedName: "container-restore-headers",
+const ContainerSetAccessPolicyExceptionHeaders = {
+    serializedName: "Container_setAccessPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSetAccessPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRestoreHeaders = {
+    serializedName: "Container_restoreHeaders",
     type: {
         name: "Composite",
         className: "ContainerRestoreHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12273,56 +12658,195 @@ var ContainerRestoreHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseHeaders = {
-    serializedName: "container-acquirelease-headers",
+const ContainerRestoreExceptionHeaders = {
+    serializedName: "Container_restoreExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRestoreExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRenameHeaders = {
+    serializedName: "Container_renameHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenameHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerRenameExceptionHeaders = {
+    serializedName: "Container_renameExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenameExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSubmitBatchHeaders = {
+    serializedName: "Container_submitBatchHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSubmitBatchHeaders",
+        modelProperties: {
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerSubmitBatchExceptionHeaders = {
+    serializedName: "Container_submitBatchExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerSubmitBatchExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerAcquireLeaseHeaders = {
+    serializedName: "Container_acquireLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerAcquireLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerAcquireLeaseExceptionHeaders = {
+    serializedName: "Container_acquireLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerAcquireLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12330,50 +12854,66 @@ var ContainerAcquireLeaseHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseHeaders = {
-    serializedName: "container-releaselease-headers",
+const ContainerReleaseLeaseHeaders = {
+    serializedName: "Container_releaseLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerReleaseLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerReleaseLeaseExceptionHeaders = {
+    serializedName: "Container_releaseLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerReleaseLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12381,56 +12921,73 @@ var ContainerReleaseLeaseHeaders = {
         }
     }
 };
-var ContainerRenewLeaseHeaders = {
-    serializedName: "container-renewlease-headers",
+const ContainerRenewLeaseHeaders = {
+    serializedName: "Container_renewLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerRenewLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerRenewLeaseExceptionHeaders = {
+    serializedName: "Container_renewLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerRenewLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12438,56 +12995,73 @@ var ContainerRenewLeaseHeaders = {
         }
     }
 };
-var ContainerBreakLeaseHeaders = {
-    serializedName: "container-breaklease-headers",
+const ContainerBreakLeaseHeaders = {
+    serializedName: "Container_breakLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerBreakLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseTime: {
                 serializedName: "x-ms-lease-time",
+                xmlName: "x-ms-lease-time",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerBreakLeaseExceptionHeaders = {
+    serializedName: "Container_breakLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerBreakLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12495,56 +13069,73 @@ var ContainerBreakLeaseHeaders = {
         }
     }
 };
-var ContainerChangeLeaseHeaders = {
-    serializedName: "container-changelease-headers",
+const ContainerChangeLeaseHeaders = {
+    serializedName: "Container_changeLeaseHeaders",
     type: {
         name: "Composite",
         className: "ContainerChangeLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerChangeLeaseExceptionHeaders = {
+    serializedName: "Container_changeLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerChangeLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12552,44 +13143,50 @@ var ContainerChangeLeaseHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentHeaders = {
-    serializedName: "container-listblobflatsegment-headers",
+const ContainerListBlobFlatSegmentHeaders = {
+    serializedName: "Container_listBlobFlatSegmentHeaders",
     type: {
         name: "Composite",
         className: "ContainerListBlobFlatSegmentHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12597,44 +13194,66 @@ var ContainerListBlobFlatSegmentHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentHeaders = {
-    serializedName: "container-listblobhierarchysegment-headers",
+const ContainerListBlobFlatSegmentExceptionHeaders = {
+    serializedName: "Container_listBlobFlatSegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerListBlobFlatSegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerListBlobHierarchySegmentHeaders = {
+    serializedName: "Container_listBlobHierarchySegmentHeaders",
     type: {
         name: "Composite",
         className: "ContainerListBlobHierarchySegmentHeaders",
         modelProperties: {
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12642,38 +13261,59 @@ var ContainerListBlobHierarchySegmentHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoHeaders = {
-    serializedName: "container-getaccountinfo-headers",
+const ContainerListBlobHierarchySegmentExceptionHeaders = {
+    serializedName: "Container_listBlobHierarchySegmentExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerListBlobHierarchySegmentExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const ContainerGetAccountInfoHeaders = {
+    serializedName: "Container_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "ContainerGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12687,6 +13327,7 @@ var ContainerGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12697,9 +13338,19 @@ var ContainerGetAccountInfoHeaders = {
                         "BlockBlobStorage"
                     ]
                 }
-            },
+            }
+        }
+    }
+};
+const ContainerGetAccountInfoExceptionHeaders = {
+    serializedName: "Container_getAccountInfoExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "ContainerGetAccountInfoExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -12707,173 +13358,176 @@ var ContainerGetAccountInfoHeaders = {
         }
     }
 };
-var BlobDownloadHeaders = {
-    serializedName: "blob-download-headers",
+const BlobDownloadHeaders = {
+    serializedName: "Blob_downloadHeaders",
     type: {
         name: "Composite",
         className: "BlobDownloadHeaders",
         modelProperties: {
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-meta-"
             },
             objectReplicationPolicyId: {
                 serializedName: "x-ms-or-policy-id",
+                xmlName: "x-ms-or-policy-id",
                 type: {
                     name: "String"
                 }
             },
             objectReplicationRules: {
                 serializedName: "x-ms-or",
+                xmlName: "x-ms-or",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
+                    value: { type: { name: "String" } }
                 },
                 headerCollectionPrefix: "x-ms-or-"
             },
             contentLength: {
                 serializedName: "content-length",
+                xmlName: "content-length",
                 type: {
                     name: "Number"
                 }
             },
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             contentRange: {
                 serializedName: "content-range",
+                xmlName: "content-range",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             contentEncoding: {
                 serializedName: "content-encoding",
+                xmlName: "content-encoding",
                 type: {
                     name: "String"
                 }
             },
             cacheControl: {
                 serializedName: "cache-control",
+                xmlName: "cache-control",
                 type: {
                     name: "String"
                 }
             },
             contentDisposition: {
                 serializedName: "content-disposition",
+                xmlName: "content-disposition",
                 type: {
                     name: "String"
                 }
             },
             contentLanguage: {
                 serializedName: "content-language",
+                xmlName: "content-language",
                 type: {
                     name: "String"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             blobType: {
                 serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
                 }
             },
             copyCompletedOn: {
                 serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyStatusDescription: {
                 serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
                 type: {
                     name: "String"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyProgress: {
                 serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
                 type: {
                     name: "String"
                 }
             },
             copySource: {
                 serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -12887,423 +13541,541 @@ var BlobDownloadHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            acceptRanges: {
-                serializedName: "accept-ranges",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentMD5: {
-                serializedName: "x-ms-blob-content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            tagCount: {
-                serializedName: "x-ms-tag-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isSealed: {
-                serializedName: "x-ms-blob-sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            contentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobGetPropertiesHeaders = {
-    serializedName: "blob-getproperties-headers",
-    type: {
-        name: "Composite",
-        className: "BlobGetPropertiesHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            createdOn: {
-                serializedName: "x-ms-creation-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            metadata: {
-                serializedName: "x-ms-meta",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-meta-"
-            },
-            objectReplicationPolicyId: {
-                serializedName: "x-ms-or-policy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            objectReplicationRules: {
-                serializedName: "x-ms-or",
-                type: {
-                    name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-or-"
-            },
-            blobType: {
-                serializedName: "x-ms-blob-type",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
-                }
-            },
-            copyCompletedOn: {
-                serializedName: "x-ms-copy-completion-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyStatusDescription: {
-                serializedName: "x-ms-copy-status-description",
-                type: {
-                    name: "String"
-                }
-            },
-            copyId: {
-                serializedName: "x-ms-copy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            copyProgress: {
-                serializedName: "x-ms-copy-progress",
-                type: {
-                    name: "String"
-                }
-            },
-            copySource: {
-                serializedName: "x-ms-copy-source",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                serializedName: "x-ms-copy-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
-                }
-            },
-            isIncrementalCopy: {
-                serializedName: "x-ms-incremental-copy",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            destinationSnapshot: {
-                serializedName: "x-ms-copy-destination-snapshot",
-                type: {
-                    name: "String"
-                }
-            },
-            leaseDuration: {
-                serializedName: "x-ms-lease-duration",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
-                }
-            },
-            leaseState: {
-                serializedName: "x-ms-lease-state",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "available",
-                        "leased",
-                        "expired",
-                        "breaking",
-                        "broken"
-                    ]
-                }
-            },
-            leaseStatus: {
-                serializedName: "x-ms-lease-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
-                }
-            },
-            contentLength: {
-                serializedName: "content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            contentType: {
-                serializedName: "content-type",
-                type: {
-                    name: "String"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentEncoding: {
-                serializedName: "content-encoding",
-                type: {
-                    name: "String"
-                }
-            },
-            contentDisposition: {
-                serializedName: "content-disposition",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLanguage: {
-                serializedName: "content-language",
-                type: {
-                    name: "String"
-                }
-            },
-            cacheControl: {
-                serializedName: "cache-control",
-                type: {
-                    name: "String"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            acceptRanges: {
-                serializedName: "accept-ranges",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTier: {
-                serializedName: "x-ms-access-tier",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierInferred: {
-                serializedName: "x-ms-access-tier-inferred",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            archiveStatus: {
-                serializedName: "x-ms-archive-status",
-                type: {
-                    name: "String"
-                }
-            },
-            accessTierChangedOn: {
-                serializedName: "x-ms-access-tier-change-time",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             isCurrentVersion: {
                 serializedName: "x-ms-is-current-version",
+                xmlName: "x-ms-is-current-version",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            acceptRanges: {
+                serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentMD5: {
+                serializedName: "x-ms-blob-content-md5",
+                xmlName: "x-ms-blob-content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            tagCount: {
+                serializedName: "x-ms-tag-count",
+                xmlName: "x-ms-tag-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isSealed: {
+                serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            lastAccessed: {
+                serializedName: "x-ms-last-access-time",
+                xmlName: "x-ms-last-access-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            },
+            contentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            }
+        }
+    }
+};
+const BlobDownloadExceptionHeaders = {
+    serializedName: "Blob_downloadExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDownloadExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobGetPropertiesHeaders = {
+    serializedName: "Blob_getPropertiesHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetPropertiesHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            createdOn: {
+                serializedName: "x-ms-creation-time",
+                xmlName: "x-ms-creation-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            metadata: {
+                serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                },
+                headerCollectionPrefix: "x-ms-meta-"
+            },
+            objectReplicationPolicyId: {
+                serializedName: "x-ms-or-policy-id",
+                xmlName: "x-ms-or-policy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            objectReplicationRules: {
+                serializedName: "x-ms-or",
+                xmlName: "x-ms-or",
+                type: {
+                    name: "Dictionary",
+                    value: { type: { name: "String" } }
+                },
+                headerCollectionPrefix: "x-ms-or-"
+            },
+            blobType: {
+                serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
+                }
+            },
+            copyCompletedOn: {
+                serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyStatusDescription: {
+                serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
+                type: {
+                    name: "String"
+                }
+            },
+            copyId: {
+                serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            copyProgress: {
+                serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
+                type: {
+                    name: "String"
+                }
+            },
+            copySource: {
+                serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
+                type: {
+                    name: "String"
+                }
+            },
+            copyStatus: {
+                serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
+                }
+            },
+            isIncrementalCopy: {
+                serializedName: "x-ms-incremental-copy",
+                xmlName: "x-ms-incremental-copy",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            destinationSnapshot: {
+                serializedName: "x-ms-copy-destination-snapshot",
+                xmlName: "x-ms-copy-destination-snapshot",
+                type: {
+                    name: "String"
+                }
+            },
+            leaseDuration: {
+                serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["infinite", "fixed"]
+                }
+            },
+            leaseState: {
+                serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
+                type: {
+                    name: "Enum",
+                    allowedValues: [
+                        "available",
+                        "leased",
+                        "expired",
+                        "breaking",
+                        "broken"
+                    ]
+                }
+            },
+            leaseStatus: {
+                serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["locked", "unlocked"]
+                }
+            },
+            contentLength: {
+                serializedName: "content-length",
+                xmlName: "content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            contentEncoding: {
+                serializedName: "content-encoding",
+                xmlName: "content-encoding",
+                type: {
+                    name: "String"
+                }
+            },
+            contentDisposition: {
+                serializedName: "content-disposition",
+                xmlName: "content-disposition",
+                type: {
+                    name: "String"
+                }
+            },
+            contentLanguage: {
+                serializedName: "content-language",
+                xmlName: "content-language",
+                type: {
+                    name: "String"
+                }
+            },
+            cacheControl: {
+                serializedName: "cache-control",
+                xmlName: "cache-control",
+                type: {
+                    name: "String"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            acceptRanges: {
+                serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTier: {
+                serializedName: "x-ms-access-tier",
+                xmlName: "x-ms-access-tier",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierInferred: {
+                serializedName: "x-ms-access-tier-inferred",
+                xmlName: "x-ms-access-tier-inferred",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            archiveStatus: {
+                serializedName: "x-ms-archive-status",
+                xmlName: "x-ms-archive-status",
+                type: {
+                    name: "String"
+                }
+            },
+            accessTierChangedOn: {
+                serializedName: "x-ms-access-tier-change-time",
+                xmlName: "x-ms-access-tier-change-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            isCurrentVersion: {
+                serializedName: "x-ms-is-current-version",
+                xmlName: "x-ms-is-current-version",
                 type: {
                     name: "Boolean"
                 }
             },
             tagCount: {
                 serializedName: "x-ms-tag-count",
+                xmlName: "x-ms-tag-count",
                 type: {
                     name: "Number"
                 }
             },
             expiresOn: {
                 serializedName: "x-ms-expiry-time",
+                xmlName: "x-ms-expiry-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isSealed: {
                 serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
                 type: {
                     name: "Boolean"
                 }
             },
             rehydratePriority: {
                 serializedName: "x-ms-rehydrate-priority",
+                xmlName: "x-ms-rehydrate-priority",
                 type: {
-                    name: "String"
+                    name: "Enum",
+                    allowedValues: ["High", "Standard"]
+                }
+            },
+            lastAccessed: {
+                serializedName: "x-ms-last-access-time",
+                xmlName: "x-ms-last-access-time",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiresOn: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13311,38 +14083,59 @@ var BlobGetPropertiesHeaders = {
         }
     }
 };
-var BlobDeleteHeaders = {
-    serializedName: "blob-delete-headers",
+const BlobGetPropertiesExceptionHeaders = {
+    serializedName: "Blob_getPropertiesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetPropertiesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteHeaders = {
+    serializedName: "Blob_deleteHeaders",
     type: {
         name: "Composite",
         className: "BlobDeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13350,245 +14143,15 @@ var BlobDeleteHeaders = {
         }
     }
 };
-var BlobSetAccessControlHeaders = {
-    serializedName: "blob-setaccesscontrol-headers",
+const BlobDeleteExceptionHeaders = {
+    serializedName: "Blob_deleteExceptionHeaders",
     type: {
         name: "Composite",
-        className: "BlobSetAccessControlHeaders",
+        className: "BlobDeleteExceptionHeaders",
         modelProperties: {
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobGetAccessControlHeaders = {
-    serializedName: "blob-getaccesscontrol-headers",
-    type: {
-        name: "Composite",
-        className: "BlobGetAccessControlHeaders",
-        modelProperties: {
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            xMsOwner: {
-                serializedName: "x-ms-owner",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsGroup: {
-                serializedName: "x-ms-group",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsPermissions: {
-                serializedName: "x-ms-permissions",
-                type: {
-                    name: "String"
-                }
-            },
-            xMsAcl: {
-                serializedName: "x-ms-acl",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobRenameHeaders = {
-    serializedName: "blob-rename-headers",
-    type: {
-        name: "Composite",
-        className: "BlobRenameHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            contentLength: {
-                serializedName: "content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            }
-        }
-    }
-};
-var PageBlobCreateHeaders = {
-    serializedName: "pageblob-create-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobCreateHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13596,200 +14159,43 @@ var PageBlobCreateHeaders = {
         }
     }
 };
-var AppendBlobCreateHeaders = {
-    serializedName: "appendblob-create-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobCreateHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobUploadHeaders = {
-    serializedName: "blockblob-upload-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobUploadHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobUndeleteHeaders = {
-    serializedName: "blob-undelete-headers",
+const BlobUndeleteHeaders = {
+    serializedName: "Blob_undeleteHeaders",
     type: {
         name: "Composite",
         className: "BlobUndeleteHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13797,50 +14203,82 @@ var BlobUndeleteHeaders = {
         }
     }
 };
-var BlobSetExpiryHeaders = {
-    serializedName: "blob-setexpiry-headers",
+const BlobUndeleteExceptionHeaders = {
+    serializedName: "Blob_undeleteExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobUndeleteExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetExpiryHeaders = {
+    serializedName: "Blob_setExpiryHeaders",
     type: {
         name: "Composite",
         className: "BlobSetExpiryHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobSetExpiryExceptionHeaders = {
+    serializedName: "Blob_setExpiryExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetExpiryExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13848,56 +14286,64 @@ var BlobSetExpiryHeaders = {
         }
     }
 };
-var BlobSetHTTPHeadersHeaders = {
-    serializedName: "blob-sethttpheaders-headers",
+const BlobSetHttpHeadersHeaders = {
+    serializedName: "Blob_setHttpHeadersHeaders",
     type: {
         name: "Composite",
-        className: "BlobSetHTTPHeadersHeaders",
+        className: "BlobSetHttpHeadersHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13905,74 +14351,282 @@ var BlobSetHTTPHeadersHeaders = {
         }
     }
 };
-var BlobSetMetadataHeaders = {
-    serializedName: "blob-setmetadata-headers",
+const BlobSetHttpHeadersExceptionHeaders = {
+    serializedName: "Blob_setHttpHeadersExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetHttpHeadersExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetImmutabilityPolicyHeaders = {
+    serializedName: "Blob_setImmutabilityPolicyHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetImmutabilityPolicyHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyExpiry: {
+                serializedName: "x-ms-immutability-policy-until-date",
+                xmlName: "x-ms-immutability-policy-until-date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            immutabilityPolicyMode: {
+                serializedName: "x-ms-immutability-policy-mode",
+                xmlName: "x-ms-immutability-policy-mode",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["Mutable", "Unlocked", "Locked"]
+                }
+            }
+        }
+    }
+};
+const BlobSetImmutabilityPolicyExceptionHeaders = {
+    serializedName: "Blob_setImmutabilityPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetImmutabilityPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteImmutabilityPolicyHeaders = {
+    serializedName: "Blob_deleteImmutabilityPolicyHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDeleteImmutabilityPolicyHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            }
+        }
+    }
+};
+const BlobDeleteImmutabilityPolicyExceptionHeaders = {
+    serializedName: "Blob_deleteImmutabilityPolicyExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobDeleteImmutabilityPolicyExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetLegalHoldHeaders = {
+    serializedName: "Blob_setLegalHoldHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetLegalHoldHeaders",
+        modelProperties: {
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            legalHold: {
+                serializedName: "x-ms-legal-hold",
+                xmlName: "x-ms-legal-hold",
+                type: {
+                    name: "Boolean"
+                }
+            }
+        }
+    }
+};
+const BlobSetLegalHoldExceptionHeaders = {
+    serializedName: "Blob_setLegalHoldExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetLegalHoldExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetMetadataHeaders = {
+    serializedName: "Blob_setMetadataHeaders",
     type: {
         name: "Composite",
         className: "BlobSetMetadataHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             encryptionKeySha256: {
                 serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
                 type: {
                     name: "String"
                 }
             },
             encryptionScope: {
                 serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -13980,56 +14634,89 @@ var BlobSetMetadataHeaders = {
         }
     }
 };
-var BlobAcquireLeaseHeaders = {
-    serializedName: "blob-acquirelease-headers",
+const BlobSetMetadataExceptionHeaders = {
+    serializedName: "Blob_setMetadataExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetMetadataExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobAcquireLeaseHeaders = {
+    serializedName: "Blob_acquireLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobAcquireLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobAcquireLeaseExceptionHeaders = {
+    serializedName: "Blob_acquireLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobAcquireLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14037,50 +14724,66 @@ var BlobAcquireLeaseHeaders = {
         }
     }
 };
-var BlobReleaseLeaseHeaders = {
-    serializedName: "blob-releaselease-headers",
+const BlobReleaseLeaseHeaders = {
+    serializedName: "Blob_releaseLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobReleaseLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobReleaseLeaseExceptionHeaders = {
+    serializedName: "Blob_releaseLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobReleaseLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14088,56 +14791,73 @@ var BlobReleaseLeaseHeaders = {
         }
     }
 };
-var BlobRenewLeaseHeaders = {
-    serializedName: "blob-renewlease-headers",
+const BlobRenewLeaseHeaders = {
+    serializedName: "Blob_renewLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobRenewLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobRenewLeaseExceptionHeaders = {
+    serializedName: "Blob_renewLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobRenewLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14145,56 +14865,73 @@ var BlobRenewLeaseHeaders = {
         }
     }
 };
-var BlobChangeLeaseHeaders = {
-    serializedName: "blob-changelease-headers",
+const BlobChangeLeaseHeaders = {
+    serializedName: "Blob_changeLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobChangeLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             leaseId: {
                 serializedName: "x-ms-lease-id",
+                xmlName: "x-ms-lease-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobChangeLeaseExceptionHeaders = {
+    serializedName: "Blob_changeLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobChangeLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14202,56 +14939,73 @@ var BlobChangeLeaseHeaders = {
         }
     }
 };
-var BlobBreakLeaseHeaders = {
-    serializedName: "blob-breaklease-headers",
+const BlobBreakLeaseHeaders = {
+    serializedName: "Blob_breakLeaseHeaders",
     type: {
         name: "Composite",
         className: "BlobBreakLeaseHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             leaseTime: {
                 serializedName: "x-ms-lease-time",
+                xmlName: "x-ms-lease-time",
                 type: {
                     name: "Number"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
-            },
+            }
+        }
+    }
+};
+const BlobBreakLeaseExceptionHeaders = {
+    serializedName: "Blob_breakLeaseExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobBreakLeaseExceptionHeaders",
+        modelProperties: {
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14259,68 +15013,78 @@ var BlobBreakLeaseHeaders = {
         }
     }
 };
-var BlobCreateSnapshotHeaders = {
-    serializedName: "blob-createsnapshot-headers",
+const BlobCreateSnapshotHeaders = {
+    serializedName: "Blob_createSnapshotHeaders",
     type: {
         name: "Composite",
         className: "BlobCreateSnapshotHeaders",
         modelProperties: {
             snapshot: {
                 serializedName: "x-ms-snapshot",
+                xmlName: "x-ms-snapshot",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14328,74 +15092,95 @@ var BlobCreateSnapshotHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLHeaders = {
-    serializedName: "blob-startcopyfromurl-headers",
+const BlobCreateSnapshotExceptionHeaders = {
+    serializedName: "Blob_createSnapshotExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobCreateSnapshotExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobStartCopyFromURLHeaders = {
+    serializedName: "Blob_startCopyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobStartCopyFromURLHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14403,83 +15188,109 @@ var BlobStartCopyFromURLHeaders = {
         }
     }
 };
-var BlobCopyFromURLHeaders = {
-    serializedName: "blob-copyfromurl-headers",
+const BlobStartCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_startCopyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobStartCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobCopyFromURLHeaders = {
+    serializedName: "Blob_copyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobCopyFromURLHeaders",
         modelProperties: {
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             versionId: {
                 serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
+                defaultValue: "success",
+                isConstant: true,
                 serializedName: "x-ms-copy-status",
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "success"
-                    ]
+                    name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             xMsContentCrc64: {
                 serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
                 type: {
                     name: "ByteArray"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14487,38 +15298,59 @@ var BlobCopyFromURLHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLHeaders = {
-    serializedName: "blob-abortcopyfromurl-headers",
+const BlobCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_copyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobAbortCopyFromURLHeaders = {
+    serializedName: "Blob_abortCopyFromURLHeaders",
     type: {
         name: "Composite",
         className: "BlobAbortCopyFromURLHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14526,32 +15358,52 @@ var BlobAbortCopyFromURLHeaders = {
         }
     }
 };
-var BlobSetTierHeaders = {
-    serializedName: "blob-settier-headers",
+const BlobAbortCopyFromURLExceptionHeaders = {
+    serializedName: "Blob_abortCopyFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobAbortCopyFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTierHeaders = {
+    serializedName: "Blob_setTierHeaders",
     type: {
         name: "Composite",
         className: "BlobSetTierHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14559,38 +15411,59 @@ var BlobSetTierHeaders = {
         }
     }
 };
-var BlobGetAccountInfoHeaders = {
-    serializedName: "blob-getaccountinfo-headers",
+const BlobSetTierExceptionHeaders = {
+    serializedName: "Blob_setTierExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetTierExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobGetAccountInfoHeaders = {
+    serializedName: "Blob_getAccountInfoHeaders",
     type: {
         name: "Composite",
         className: "BlobGetAccountInfoHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             skuName: {
                 serializedName: "x-ms-sku-name",
+                xmlName: "x-ms-sku-name",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -14604,6 +15477,7 @@ var BlobGetAccountInfoHeaders = {
             },
             accountKind: {
                 serializedName: "x-ms-account-kind",
+                xmlName: "x-ms-account-kind",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -14614,78 +15488,19 @@ var BlobGetAccountInfoHeaders = {
                         "BlockBlobStorage"
                     ]
                 }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
             }
         }
     }
 };
-var BlockBlobStageBlockHeaders = {
-    serializedName: "blockblob-stageblock-headers",
+const BlobGetAccountInfoExceptionHeaders = {
+    serializedName: "Blob_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
-        className: "BlockBlobStageBlockHeaders",
+        className: "BlobGetAccountInfoExceptionHeaders",
         modelProperties: {
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -14693,1145 +15508,159 @@ var BlockBlobStageBlockHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLHeaders = {
-    serializedName: "blockblob-stageblockfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobStageBlockFromURLHeaders",
-        modelProperties: {
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobCommitBlockListHeaders = {
-    serializedName: "blockblob-commitblocklist-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobCommitBlockListHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            versionId: {
-                serializedName: "x-ms-version-id",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlockBlobGetBlockListHeaders = {
-    serializedName: "blockblob-getblocklist-headers",
-    type: {
-        name: "Composite",
-        className: "BlockBlobGetBlockListHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            contentType: {
-                serializedName: "content-type",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUploadPagesHeaders = {
-    serializedName: "pageblob-uploadpages-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUploadPagesHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobClearPagesHeaders = {
-    serializedName: "pageblob-clearpages-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobClearPagesHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUploadPagesFromURLHeaders = {
-    serializedName: "pageblob-uploadpagesfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUploadPagesFromURLHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobGetPageRangesHeaders = {
-    serializedName: "pageblob-getpageranges-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobGetPageRangesHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobGetPageRangesDiffHeaders = {
-    serializedName: "pageblob-getpagerangesdiff-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobGetPageRangesDiffHeaders",
-        modelProperties: {
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            blobContentLength: {
-                serializedName: "x-ms-blob-content-length",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobResizeHeaders = {
-    serializedName: "pageblob-resize-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobResizeHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobUpdateSequenceNumberHeaders = {
-    serializedName: "pageblob-updatesequencenumber-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobUpdateSequenceNumberHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobSequenceNumber: {
-                serializedName: "x-ms-blob-sequence-number",
-                type: {
-                    name: "Number"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var PageBlobCopyIncrementalHeaders = {
-    serializedName: "pageblob-copyincremental-headers",
-    type: {
-        name: "Composite",
-        className: "PageBlobCopyIncrementalHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            copyId: {
-                serializedName: "x-ms-copy-id",
-                type: {
-                    name: "String"
-                }
-            },
-            copyStatus: {
-                serializedName: "x-ms-copy-status",
-                type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobAppendBlockHeaders = {
-    serializedName: "appendblob-appendblock-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobAppendBlockHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobAppendOffset: {
-                serializedName: "x-ms-blob-append-offset",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobAppendBlockFromUrlHeaders = {
-    serializedName: "appendblob-appendblockfromurl-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobAppendBlockFromUrlHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            contentMD5: {
-                serializedName: "content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            xMsContentCrc64: {
-                serializedName: "x-ms-content-crc64",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            blobAppendOffset: {
-                serializedName: "x-ms-blob-append-offset",
-                type: {
-                    name: "String"
-                }
-            },
-            blobCommittedBlockCount: {
-                serializedName: "x-ms-blob-committed-block-count",
-                type: {
-                    name: "Number"
-                }
-            },
-            encryptionKeySha256: {
-                serializedName: "x-ms-encryption-key-sha256",
-                type: {
-                    name: "String"
-                }
-            },
-            encryptionScope: {
-                serializedName: "x-ms-encryption-scope",
-                type: {
-                    name: "String"
-                }
-            },
-            isServerEncrypted: {
-                serializedName: "x-ms-request-server-encrypted",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var AppendBlobSealHeaders = {
-    serializedName: "appendblob-seal-headers",
-    type: {
-        name: "Composite",
-        className: "AppendBlobSealHeaders",
-        modelProperties: {
-            etag: {
-                serializedName: "etag",
-                type: {
-                    name: "String"
-                }
-            },
-            lastModified: {
-                serializedName: "last-modified",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            clientRequestId: {
-                serializedName: "x-ms-client-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            requestId: {
-                serializedName: "x-ms-request-id",
-                type: {
-                    name: "String"
-                }
-            },
-            version: {
-                serializedName: "x-ms-version",
-                type: {
-                    name: "String"
-                }
-            },
-            date: {
-                serializedName: "date",
-                type: {
-                    name: "DateTimeRfc1123"
-                }
-            },
-            isSealed: {
-                serializedName: "x-ms-blob-sealed",
-                type: {
-                    name: "Boolean"
-                }
-            },
-            errorCode: {
-                serializedName: "x-ms-error-code",
-                type: {
-                    name: "String"
-                }
-            }
-        }
-    }
-};
-var BlobQueryHeaders = {
-    serializedName: "blob-query-headers",
+const BlobQueryHeaders = {
+    serializedName: "Blob_queryHeaders",
     type: {
         name: "Composite",
         className: "BlobQueryHeaders",
         modelProperties: {
             lastModified: {
                 serializedName: "last-modified",
+                xmlName: "last-modified",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             metadata: {
                 serializedName: "x-ms-meta",
+                xmlName: "x-ms-meta",
                 type: {
                     name: "Dictionary",
-                    value: {
-                        type: {
-                            name: "String"
-                        }
-                    }
-                },
-                headerCollectionPrefix: "x-ms-meta-"
+                    value: { type: { name: "String" } }
+                }
             },
             contentLength: {
                 serializedName: "content-length",
+                xmlName: "content-length",
                 type: {
                     name: "Number"
                 }
             },
             contentType: {
                 serializedName: "content-type",
+                xmlName: "content-type",
                 type: {
                     name: "String"
                 }
             },
             contentRange: {
                 serializedName: "content-range",
+                xmlName: "content-range",
                 type: {
                     name: "String"
                 }
             },
             etag: {
                 serializedName: "etag",
+                xmlName: "etag",
                 type: {
                     name: "String"
                 }
             },
             contentMD5: {
                 serializedName: "content-md5",
+                xmlName: "content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             contentEncoding: {
                 serializedName: "content-encoding",
+                xmlName: "content-encoding",
                 type: {
                     name: "String"
                 }
             },
             cacheControl: {
                 serializedName: "cache-control",
+                xmlName: "cache-control",
                 type: {
                     name: "String"
                 }
             },
             contentDisposition: {
                 serializedName: "content-disposition",
+                xmlName: "content-disposition",
                 type: {
                     name: "String"
                 }
             },
             contentLanguage: {
                 serializedName: "content-language",
+                xmlName: "content-language",
                 type: {
                     name: "String"
                 }
             },
             blobSequenceNumber: {
                 serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
                 type: {
                     name: "Number"
                 }
             },
             blobType: {
                 serializedName: "x-ms-blob-type",
+                xmlName: "x-ms-blob-type",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "BlockBlob",
-                        "PageBlob",
-                        "AppendBlob"
-                    ]
+                    allowedValues: ["BlockBlob", "PageBlob", "AppendBlob"]
                 }
             },
             copyCompletionTime: {
                 serializedName: "x-ms-copy-completion-time",
+                xmlName: "x-ms-copy-completion-time",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             copyStatusDescription: {
                 serializedName: "x-ms-copy-status-description",
+                xmlName: "x-ms-copy-status-description",
                 type: {
                     name: "String"
                 }
             },
             copyId: {
                 serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
                 type: {
                     name: "String"
                 }
             },
             copyProgress: {
                 serializedName: "x-ms-copy-progress",
+                xmlName: "x-ms-copy-progress",
                 type: {
                     name: "String"
                 }
             },
             copySource: {
                 serializedName: "x-ms-copy-source",
+                xmlName: "x-ms-copy-source",
                 type: {
                     name: "String"
                 }
             },
             copyStatus: {
                 serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "pending",
-                        "success",
-                        "aborted",
-                        "failed"
-                    ]
+                    allowedValues: ["pending", "success", "aborted", "failed"]
                 }
             },
             leaseDuration: {
                 serializedName: "x-ms-lease-duration",
+                xmlName: "x-ms-lease-duration",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "infinite",
-                        "fixed"
-                    ]
+                    allowedValues: ["infinite", "fixed"]
                 }
             },
             leaseState: {
                 serializedName: "x-ms-lease-state",
+                xmlName: "x-ms-lease-state",
                 type: {
                     name: "Enum",
                     allowedValues: [
@@ -15845,82 +15674,108 @@ var BlobQueryHeaders = {
             },
             leaseStatus: {
                 serializedName: "x-ms-lease-status",
+                xmlName: "x-ms-lease-status",
                 type: {
                     name: "Enum",
-                    allowedValues: [
-                        "locked",
-                        "unlocked"
-                    ]
+                    allowedValues: ["locked", "unlocked"]
                 }
             },
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             acceptRanges: {
                 serializedName: "accept-ranges",
+                xmlName: "accept-ranges",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             blobCommittedBlockCount: {
                 serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
                 type: {
                     name: "Number"
                 }
             },
             isServerEncrypted: {
                 serializedName: "x-ms-server-encrypted",
+                xmlName: "x-ms-server-encrypted",
                 type: {
                     name: "Boolean"
                 }
             },
             encryptionKeySha256: {
                 serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
                 type: {
                     name: "String"
                 }
             },
             encryptionScope: {
                 serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
                 type: {
                     name: "String"
                 }
             },
             blobContentMD5: {
                 serializedName: "x-ms-blob-content-md5",
-                type: {
-                    name: "ByteArray"
-                }
-            },
-            contentCrc64: {
-                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-blob-content-md5",
                 type: {
                     name: "ByteArray"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            },
+            contentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            }
+        }
+    }
+};
+const BlobQueryExceptionHeaders = {
+    serializedName: "Blob_queryExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobQueryExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -15928,38 +15783,43 @@ var BlobQueryHeaders = {
         }
     }
 };
-var BlobGetTagsHeaders = {
-    serializedName: "blob-gettags-headers",
+const BlobGetTagsHeaders = {
+    serializedName: "Blob_getTagsHeaders",
     type: {
         name: "Composite",
         className: "BlobGetTagsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -15967,38 +15827,1951 @@ var BlobGetTagsHeaders = {
         }
     }
 };
-var BlobSetTagsHeaders = {
-    serializedName: "blob-settags-headers",
+const BlobGetTagsExceptionHeaders = {
+    serializedName: "Blob_getTagsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobGetTagsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTagsHeaders = {
+    serializedName: "Blob_setTagsHeaders",
     type: {
         name: "Composite",
         className: "BlobSetTagsHeaders",
         modelProperties: {
             clientRequestId: {
                 serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
                 type: {
                     name: "String"
                 }
             },
             requestId: {
                 serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
                 type: {
                     name: "String"
                 }
             },
             version: {
                 serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
                 type: {
                     name: "String"
                 }
             },
             date: {
                 serializedName: "date",
+                xmlName: "date",
                 type: {
                     name: "DateTimeRfc1123"
                 }
             },
             errorCode: {
                 serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlobSetTagsExceptionHeaders = {
+    serializedName: "Blob_setTagsExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlobSetTagsExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCreateHeaders = {
+    serializedName: "PageBlob_createHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCreateHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCreateExceptionHeaders = {
+    serializedName: "PageBlob_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesHeaders = {
+    serializedName: "PageBlob_uploadPagesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesExceptionHeaders = {
+    serializedName: "PageBlob_uploadPagesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobClearPagesHeaders = {
+    serializedName: "PageBlob_clearPagesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobClearPagesHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobClearPagesExceptionHeaders = {
+    serializedName: "PageBlob_clearPagesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobClearPagesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesFromURLHeaders = {
+    serializedName: "PageBlob_uploadPagesFromURLHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesFromURLHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUploadPagesFromURLExceptionHeaders = {
+    serializedName: "PageBlob_uploadPagesFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUploadPagesFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesHeaders = {
+    serializedName: "PageBlob_getPageRangesHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesExceptionHeaders = {
+    serializedName: "PageBlob_getPageRangesExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesDiffHeaders = {
+    serializedName: "PageBlob_getPageRangesDiffHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesDiffHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobGetPageRangesDiffExceptionHeaders = {
+    serializedName: "PageBlob_getPageRangesDiffExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobGetPageRangesDiffExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobResizeHeaders = {
+    serializedName: "PageBlob_resizeHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobResizeHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobResizeExceptionHeaders = {
+    serializedName: "PageBlob_resizeExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobResizeExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUpdateSequenceNumberHeaders = {
+    serializedName: "PageBlob_updateSequenceNumberHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUpdateSequenceNumberHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobSequenceNumber: {
+                serializedName: "x-ms-blob-sequence-number",
+                xmlName: "x-ms-blob-sequence-number",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobUpdateSequenceNumberExceptionHeaders = {
+    serializedName: "PageBlob_updateSequenceNumberExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobUpdateSequenceNumberExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCopyIncrementalHeaders = {
+    serializedName: "PageBlob_copyIncrementalHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCopyIncrementalHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            copyId: {
+                serializedName: "x-ms-copy-id",
+                xmlName: "x-ms-copy-id",
+                type: {
+                    name: "String"
+                }
+            },
+            copyStatus: {
+                serializedName: "x-ms-copy-status",
+                xmlName: "x-ms-copy-status",
+                type: {
+                    name: "Enum",
+                    allowedValues: ["pending", "success", "aborted", "failed"]
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const PageBlobCopyIncrementalExceptionHeaders = {
+    serializedName: "PageBlob_copyIncrementalExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "PageBlobCopyIncrementalExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobCreateHeaders = {
+    serializedName: "AppendBlob_createHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobCreateHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobCreateExceptionHeaders = {
+    serializedName: "AppendBlob_createExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobCreateExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockHeaders = {
+    serializedName: "AppendBlob_appendBlockHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobAppendOffset: {
+                serializedName: "x-ms-blob-append-offset",
+                xmlName: "x-ms-blob-append-offset",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockExceptionHeaders = {
+    serializedName: "AppendBlob_appendBlockExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockFromUrlHeaders = {
+    serializedName: "AppendBlob_appendBlockFromUrlHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockFromUrlHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            blobAppendOffset: {
+                serializedName: "x-ms-blob-append-offset",
+                xmlName: "x-ms-blob-append-offset",
+                type: {
+                    name: "String"
+                }
+            },
+            blobCommittedBlockCount: {
+                serializedName: "x-ms-blob-committed-block-count",
+                xmlName: "x-ms-blob-committed-block-count",
+                type: {
+                    name: "Number"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobAppendBlockFromUrlExceptionHeaders = {
+    serializedName: "AppendBlob_appendBlockFromUrlExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobAppendBlockFromUrlExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const AppendBlobSealHeaders = {
+    serializedName: "AppendBlob_sealHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobSealHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isSealed: {
+                serializedName: "x-ms-blob-sealed",
+                xmlName: "x-ms-blob-sealed",
+                type: {
+                    name: "Boolean"
+                }
+            }
+        }
+    }
+};
+const AppendBlobSealExceptionHeaders = {
+    serializedName: "AppendBlob_sealExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "AppendBlobSealExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobUploadHeaders = {
+    serializedName: "BlockBlob_uploadHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobUploadHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobUploadExceptionHeaders = {
+    serializedName: "BlockBlob_uploadExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobUploadExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobPutBlobFromUrlHeaders = {
+    serializedName: "BlockBlob_putBlobFromUrlHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobPutBlobFromUrlHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobPutBlobFromUrlExceptionHeaders = {
+    serializedName: "BlockBlob_putBlobFromUrlExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobPutBlobFromUrlExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockHeaders = {
+    serializedName: "BlockBlob_stageBlockHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockHeaders",
+        modelProperties: {
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockExceptionHeaders = {
+    serializedName: "BlockBlob_stageBlockExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockFromURLHeaders = {
+    serializedName: "BlockBlob_stageBlockFromURLHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockFromURLHeaders",
+        modelProperties: {
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobStageBlockFromURLExceptionHeaders = {
+    serializedName: "BlockBlob_stageBlockFromURLExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobStageBlockFromURLExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobCommitBlockListHeaders = {
+    serializedName: "BlockBlob_commitBlockListHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobCommitBlockListHeaders",
+        modelProperties: {
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            contentMD5: {
+                serializedName: "content-md5",
+                xmlName: "content-md5",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            xMsContentCrc64: {
+                serializedName: "x-ms-content-crc64",
+                xmlName: "x-ms-content-crc64",
+                type: {
+                    name: "ByteArray"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            versionId: {
+                serializedName: "x-ms-version-id",
+                xmlName: "x-ms-version-id",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            isServerEncrypted: {
+                serializedName: "x-ms-request-server-encrypted",
+                xmlName: "x-ms-request-server-encrypted",
+                type: {
+                    name: "Boolean"
+                }
+            },
+            encryptionKeySha256: {
+                serializedName: "x-ms-encryption-key-sha256",
+                xmlName: "x-ms-encryption-key-sha256",
+                type: {
+                    name: "String"
+                }
+            },
+            encryptionScope: {
+                serializedName: "x-ms-encryption-scope",
+                xmlName: "x-ms-encryption-scope",
+                type: {
+                    name: "String"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobCommitBlockListExceptionHeaders = {
+    serializedName: "BlockBlob_commitBlockListExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobCommitBlockListExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobGetBlockListHeaders = {
+    serializedName: "BlockBlob_getBlockListHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobGetBlockListHeaders",
+        modelProperties: {
+            lastModified: {
+                serializedName: "last-modified",
+                xmlName: "last-modified",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            etag: {
+                serializedName: "etag",
+                xmlName: "etag",
+                type: {
+                    name: "String"
+                }
+            },
+            contentType: {
+                serializedName: "content-type",
+                xmlName: "content-type",
+                type: {
+                    name: "String"
+                }
+            },
+            blobContentLength: {
+                serializedName: "x-ms-blob-content-length",
+                xmlName: "x-ms-blob-content-length",
+                type: {
+                    name: "Number"
+                }
+            },
+            clientRequestId: {
+                serializedName: "x-ms-client-request-id",
+                xmlName: "x-ms-client-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            requestId: {
+                serializedName: "x-ms-request-id",
+                xmlName: "x-ms-request-id",
+                type: {
+                    name: "String"
+                }
+            },
+            version: {
+                serializedName: "x-ms-version",
+                xmlName: "x-ms-version",
+                type: {
+                    name: "String"
+                }
+            },
+            date: {
+                serializedName: "date",
+                xmlName: "date",
+                type: {
+                    name: "DateTimeRfc1123"
+                }
+            },
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
+                type: {
+                    name: "String"
+                }
+            }
+        }
+    }
+};
+const BlockBlobGetBlockListExceptionHeaders = {
+    serializedName: "BlockBlob_getBlockListExceptionHeaders",
+    type: {
+        name: "Composite",
+        className: "BlockBlobGetBlockListExceptionHeaders",
+        modelProperties: {
+            errorCode: {
+                serializedName: "x-ms-error-code",
+                xmlName: "x-ms-error-code",
                 type: {
                     name: "String"
                 }
@@ -16007,715 +17780,497 @@ var BlobSetTagsHeaders = {
     }
 };
 
+var Mappers = /*#__PURE__*/Object.freeze({
+    __proto__: null,
+    BlobServiceProperties: BlobServiceProperties,
+    Logging: Logging,
+    RetentionPolicy: RetentionPolicy,
+    Metrics: Metrics,
+    CorsRule: CorsRule,
+    StaticWebsite: StaticWebsite,
+    StorageError: StorageError,
+    BlobServiceStatistics: BlobServiceStatistics,
+    GeoReplication: GeoReplication,
+    ListContainersSegmentResponse: ListContainersSegmentResponse,
+    ContainerItem: ContainerItem,
+    ContainerProperties: ContainerProperties,
+    KeyInfo: KeyInfo,
+    UserDelegationKey: UserDelegationKey,
+    FilterBlobSegment: FilterBlobSegment,
+    FilterBlobItem: FilterBlobItem,
+    BlobTags: BlobTags,
+    BlobTag: BlobTag,
+    SignedIdentifier: SignedIdentifier,
+    AccessPolicy: AccessPolicy,
+    ListBlobsFlatSegmentResponse: ListBlobsFlatSegmentResponse,
+    BlobFlatListSegment: BlobFlatListSegment,
+    BlobItemInternal: BlobItemInternal,
+    BlobPropertiesInternal: BlobPropertiesInternal,
+    ListBlobsHierarchySegmentResponse: ListBlobsHierarchySegmentResponse,
+    BlobHierarchyListSegment: BlobHierarchyListSegment,
+    BlobPrefix: BlobPrefix,
+    BlockLookupList: BlockLookupList,
+    BlockList: BlockList,
+    Block: Block,
+    PageList: PageList,
+    PageRange: PageRange,
+    ClearRange: ClearRange,
+    QueryRequest: QueryRequest,
+    QuerySerialization: QuerySerialization,
+    QueryFormat: QueryFormat,
+    DelimitedTextConfiguration: DelimitedTextConfiguration,
+    JsonTextConfiguration: JsonTextConfiguration,
+    ArrowConfiguration: ArrowConfiguration,
+    ArrowField: ArrowField,
+    ServiceSetPropertiesHeaders: ServiceSetPropertiesHeaders,
+    ServiceSetPropertiesExceptionHeaders: ServiceSetPropertiesExceptionHeaders,
+    ServiceGetPropertiesHeaders: ServiceGetPropertiesHeaders,
+    ServiceGetPropertiesExceptionHeaders: ServiceGetPropertiesExceptionHeaders,
+    ServiceGetStatisticsHeaders: ServiceGetStatisticsHeaders,
+    ServiceGetStatisticsExceptionHeaders: ServiceGetStatisticsExceptionHeaders,
+    ServiceListContainersSegmentHeaders: ServiceListContainersSegmentHeaders,
+    ServiceListContainersSegmentExceptionHeaders: ServiceListContainersSegmentExceptionHeaders,
+    ServiceGetUserDelegationKeyHeaders: ServiceGetUserDelegationKeyHeaders,
+    ServiceGetUserDelegationKeyExceptionHeaders: ServiceGetUserDelegationKeyExceptionHeaders,
+    ServiceGetAccountInfoHeaders: ServiceGetAccountInfoHeaders,
+    ServiceGetAccountInfoExceptionHeaders: ServiceGetAccountInfoExceptionHeaders,
+    ServiceSubmitBatchHeaders: ServiceSubmitBatchHeaders,
+    ServiceSubmitBatchExceptionHeaders: ServiceSubmitBatchExceptionHeaders,
+    ServiceFilterBlobsHeaders: ServiceFilterBlobsHeaders,
+    ServiceFilterBlobsExceptionHeaders: ServiceFilterBlobsExceptionHeaders,
+    ContainerCreateHeaders: ContainerCreateHeaders,
+    ContainerCreateExceptionHeaders: ContainerCreateExceptionHeaders,
+    ContainerGetPropertiesHeaders: ContainerGetPropertiesHeaders,
+    ContainerGetPropertiesExceptionHeaders: ContainerGetPropertiesExceptionHeaders,
+    ContainerDeleteHeaders: ContainerDeleteHeaders,
+    ContainerDeleteExceptionHeaders: ContainerDeleteExceptionHeaders,
+    ContainerSetMetadataHeaders: ContainerSetMetadataHeaders,
+    ContainerSetMetadataExceptionHeaders: ContainerSetMetadataExceptionHeaders,
+    ContainerGetAccessPolicyHeaders: ContainerGetAccessPolicyHeaders,
+    ContainerGetAccessPolicyExceptionHeaders: ContainerGetAccessPolicyExceptionHeaders,
+    ContainerSetAccessPolicyHeaders: ContainerSetAccessPolicyHeaders,
+    ContainerSetAccessPolicyExceptionHeaders: ContainerSetAccessPolicyExceptionHeaders,
+    ContainerRestoreHeaders: ContainerRestoreHeaders,
+    ContainerRestoreExceptionHeaders: ContainerRestoreExceptionHeaders,
+    ContainerRenameHeaders: ContainerRenameHeaders,
+    ContainerRenameExceptionHeaders: ContainerRenameExceptionHeaders,
+    ContainerSubmitBatchHeaders: ContainerSubmitBatchHeaders,
+    ContainerSubmitBatchExceptionHeaders: ContainerSubmitBatchExceptionHeaders,
+    ContainerAcquireLeaseHeaders: ContainerAcquireLeaseHeaders,
+    ContainerAcquireLeaseExceptionHeaders: ContainerAcquireLeaseExceptionHeaders,
+    ContainerReleaseLeaseHeaders: ContainerReleaseLeaseHeaders,
+    ContainerReleaseLeaseExceptionHeaders: ContainerReleaseLeaseExceptionHeaders,
+    ContainerRenewLeaseHeaders: ContainerRenewLeaseHeaders,
+    ContainerRenewLeaseExceptionHeaders: ContainerRenewLeaseExceptionHeaders,
+    ContainerBreakLeaseHeaders: ContainerBreakLeaseHeaders,
+    ContainerBreakLeaseExceptionHeaders: ContainerBreakLeaseExceptionHeaders,
+    ContainerChangeLeaseHeaders: ContainerChangeLeaseHeaders,
+    ContainerChangeLeaseExceptionHeaders: ContainerChangeLeaseExceptionHeaders,
+    ContainerListBlobFlatSegmentHeaders: ContainerListBlobFlatSegmentHeaders,
+    ContainerListBlobFlatSegmentExceptionHeaders: ContainerListBlobFlatSegmentExceptionHeaders,
+    ContainerListBlobHierarchySegmentHeaders: ContainerListBlobHierarchySegmentHeaders,
+    ContainerListBlobHierarchySegmentExceptionHeaders: ContainerListBlobHierarchySegmentExceptionHeaders,
+    ContainerGetAccountInfoHeaders: ContainerGetAccountInfoHeaders,
+    ContainerGetAccountInfoExceptionHeaders: ContainerGetAccountInfoExceptionHeaders,
+    BlobDownloadHeaders: BlobDownloadHeaders,
+    BlobDownloadExceptionHeaders: BlobDownloadExceptionHeaders,
+    BlobGetPropertiesHeaders: BlobGetPropertiesHeaders,
+    BlobGetPropertiesExceptionHeaders: BlobGetPropertiesExceptionHeaders,
+    BlobDeleteHeaders: BlobDeleteHeaders,
+    BlobDeleteExceptionHeaders: BlobDeleteExceptionHeaders,
+    BlobUndeleteHeaders: BlobUndeleteHeaders,
+    BlobUndeleteExceptionHeaders: BlobUndeleteExceptionHeaders,
+    BlobSetExpiryHeaders: BlobSetExpiryHeaders,
+    BlobSetExpiryExceptionHeaders: BlobSetExpiryExceptionHeaders,
+    BlobSetHttpHeadersHeaders: BlobSetHttpHeadersHeaders,
+    BlobSetHttpHeadersExceptionHeaders: BlobSetHttpHeadersExceptionHeaders,
+    BlobSetImmutabilityPolicyHeaders: BlobSetImmutabilityPolicyHeaders,
+    BlobSetImmutabilityPolicyExceptionHeaders: BlobSetImmutabilityPolicyExceptionHeaders,
+    BlobDeleteImmutabilityPolicyHeaders: BlobDeleteImmutabilityPolicyHeaders,
+    BlobDeleteImmutabilityPolicyExceptionHeaders: BlobDeleteImmutabilityPolicyExceptionHeaders,
+    BlobSetLegalHoldHeaders: BlobSetLegalHoldHeaders,
+    BlobSetLegalHoldExceptionHeaders: BlobSetLegalHoldExceptionHeaders,
+    BlobSetMetadataHeaders: BlobSetMetadataHeaders,
+    BlobSetMetadataExceptionHeaders: BlobSetMetadataExceptionHeaders,
+    BlobAcquireLeaseHeaders: BlobAcquireLeaseHeaders,
+    BlobAcquireLeaseExceptionHeaders: BlobAcquireLeaseExceptionHeaders,
+    BlobReleaseLeaseHeaders: BlobReleaseLeaseHeaders,
+    BlobReleaseLeaseExceptionHeaders: BlobReleaseLeaseExceptionHeaders,
+    BlobRenewLeaseHeaders: BlobRenewLeaseHeaders,
+    BlobRenewLeaseExceptionHeaders: BlobRenewLeaseExceptionHeaders,
+    BlobChangeLeaseHeaders: BlobChangeLeaseHeaders,
+    BlobChangeLeaseExceptionHeaders: BlobChangeLeaseExceptionHeaders,
+    BlobBreakLeaseHeaders: BlobBreakLeaseHeaders,
+    BlobBreakLeaseExceptionHeaders: BlobBreakLeaseExceptionHeaders,
+    BlobCreateSnapshotHeaders: BlobCreateSnapshotHeaders,
+    BlobCreateSnapshotExceptionHeaders: BlobCreateSnapshotExceptionHeaders,
+    BlobStartCopyFromURLHeaders: BlobStartCopyFromURLHeaders,
+    BlobStartCopyFromURLExceptionHeaders: BlobStartCopyFromURLExceptionHeaders,
+    BlobCopyFromURLHeaders: BlobCopyFromURLHeaders,
+    BlobCopyFromURLExceptionHeaders: BlobCopyFromURLExceptionHeaders,
+    BlobAbortCopyFromURLHeaders: BlobAbortCopyFromURLHeaders,
+    BlobAbortCopyFromURLExceptionHeaders: BlobAbortCopyFromURLExceptionHeaders,
+    BlobSetTierHeaders: BlobSetTierHeaders,
+    BlobSetTierExceptionHeaders: BlobSetTierExceptionHeaders,
+    BlobGetAccountInfoHeaders: BlobGetAccountInfoHeaders,
+    BlobGetAccountInfoExceptionHeaders: BlobGetAccountInfoExceptionHeaders,
+    BlobQueryHeaders: BlobQueryHeaders,
+    BlobQueryExceptionHeaders: BlobQueryExceptionHeaders,
+    BlobGetTagsHeaders: BlobGetTagsHeaders,
+    BlobGetTagsExceptionHeaders: BlobGetTagsExceptionHeaders,
+    BlobSetTagsHeaders: BlobSetTagsHeaders,
+    BlobSetTagsExceptionHeaders: BlobSetTagsExceptionHeaders,
+    PageBlobCreateHeaders: PageBlobCreateHeaders,
+    PageBlobCreateExceptionHeaders: PageBlobCreateExceptionHeaders,
+    PageBlobUploadPagesHeaders: PageBlobUploadPagesHeaders,
+    PageBlobUploadPagesExceptionHeaders: PageBlobUploadPagesExceptionHeaders,
+    PageBlobClearPagesHeaders: PageBlobClearPagesHeaders,
+    PageBlobClearPagesExceptionHeaders: PageBlobClearPagesExceptionHeaders,
+    PageBlobUploadPagesFromURLHeaders: PageBlobUploadPagesFromURLHeaders,
+    PageBlobUploadPagesFromURLExceptionHeaders: PageBlobUploadPagesFromURLExceptionHeaders,
+    PageBlobGetPageRangesHeaders: PageBlobGetPageRangesHeaders,
+    PageBlobGetPageRangesExceptionHeaders: PageBlobGetPageRangesExceptionHeaders,
+    PageBlobGetPageRangesDiffHeaders: PageBlobGetPageRangesDiffHeaders,
+    PageBlobGetPageRangesDiffExceptionHeaders: PageBlobGetPageRangesDiffExceptionHeaders,
+    PageBlobResizeHeaders: PageBlobResizeHeaders,
+    PageBlobResizeExceptionHeaders: PageBlobResizeExceptionHeaders,
+    PageBlobUpdateSequenceNumberHeaders: PageBlobUpdateSequenceNumberHeaders,
+    PageBlobUpdateSequenceNumberExceptionHeaders: PageBlobUpdateSequenceNumberExceptionHeaders,
+    PageBlobCopyIncrementalHeaders: PageBlobCopyIncrementalHeaders,
+    PageBlobCopyIncrementalExceptionHeaders: PageBlobCopyIncrementalExceptionHeaders,
+    AppendBlobCreateHeaders: AppendBlobCreateHeaders,
+    AppendBlobCreateExceptionHeaders: AppendBlobCreateExceptionHeaders,
+    AppendBlobAppendBlockHeaders: AppendBlobAppendBlockHeaders,
+    AppendBlobAppendBlockExceptionHeaders: AppendBlobAppendBlockExceptionHeaders,
+    AppendBlobAppendBlockFromUrlHeaders: AppendBlobAppendBlockFromUrlHeaders,
+    AppendBlobAppendBlockFromUrlExceptionHeaders: AppendBlobAppendBlockFromUrlExceptionHeaders,
+    AppendBlobSealHeaders: AppendBlobSealHeaders,
+    AppendBlobSealExceptionHeaders: AppendBlobSealExceptionHeaders,
+    BlockBlobUploadHeaders: BlockBlobUploadHeaders,
+    BlockBlobUploadExceptionHeaders: BlockBlobUploadExceptionHeaders,
+    BlockBlobPutBlobFromUrlHeaders: BlockBlobPutBlobFromUrlHeaders,
+    BlockBlobPutBlobFromUrlExceptionHeaders: BlockBlobPutBlobFromUrlExceptionHeaders,
+    BlockBlobStageBlockHeaders: BlockBlobStageBlockHeaders,
+    BlockBlobStageBlockExceptionHeaders: BlockBlobStageBlockExceptionHeaders,
+    BlockBlobStageBlockFromURLHeaders: BlockBlobStageBlockFromURLHeaders,
+    BlockBlobStageBlockFromURLExceptionHeaders: BlockBlobStageBlockFromURLExceptionHeaders,
+    BlockBlobCommitBlockListHeaders: BlockBlobCommitBlockListHeaders,
+    BlockBlobCommitBlockListExceptionHeaders: BlockBlobCommitBlockListExceptionHeaders,
+    BlockBlobGetBlockListHeaders: BlockBlobGetBlockListHeaders,
+    BlockBlobGetBlockListExceptionHeaders: BlockBlobGetBlockListExceptionHeaders
+});
+
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BlobServiceProperties: BlobServiceProperties,
-    BlobServiceStatistics: BlobServiceStatistics,
-    ContainerItem: ContainerItem,
-    ContainerProperties: ContainerProperties,
-    CorsRule: CorsRule,
-    FilterBlobItem: FilterBlobItem,
-    FilterBlobSegment: FilterBlobSegment,
-    GeoReplication: GeoReplication,
-    KeyInfo: KeyInfo,
-    ListContainersSegmentResponse: ListContainersSegmentResponse,
-    Logging: Logging,
-    Metrics: Metrics,
-    RetentionPolicy: RetentionPolicy,
-    ServiceFilterBlobsHeaders: ServiceFilterBlobsHeaders,
-    ServiceGetAccountInfoHeaders: ServiceGetAccountInfoHeaders,
-    ServiceGetPropertiesHeaders: ServiceGetPropertiesHeaders,
-    ServiceGetStatisticsHeaders: ServiceGetStatisticsHeaders,
-    ServiceGetUserDelegationKeyHeaders: ServiceGetUserDelegationKeyHeaders,
-    ServiceListContainersSegmentHeaders: ServiceListContainersSegmentHeaders,
-    ServiceSetPropertiesHeaders: ServiceSetPropertiesHeaders,
-    ServiceSubmitBatchHeaders: ServiceSubmitBatchHeaders,
-    StaticWebsite: StaticWebsite,
-    StorageError: StorageError,
-    UserDelegationKey: UserDelegationKey
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
-var access = {
-    parameterPath: [
-        "options",
-        "access"
-    ],
+const contentType = {
+    parameterPath: ["options", "contentType"],
     mapper: {
-        serializedName: "x-ms-blob-public-access",
-        type: {
-            name: "String"
-        }
-    }
-};
-var action0 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
+        defaultValue: "application/xml",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'acquire',
+        serializedName: "Content-Type",
         type: {
             name: "String"
         }
     }
 };
-var action1 = {
-    parameterPath: "action",
+const blobServiceProperties = {
+    parameterPath: "blobServiceProperties",
+    mapper: BlobServiceProperties
+};
+const accept = {
+    parameterPath: "accept",
     mapper: {
-        required: true,
+        defaultValue: "application/xml",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'release',
+        serializedName: "Accept",
         type: {
             name: "String"
         }
     }
 };
-var action2 = {
-    parameterPath: "action",
+const url = {
+    parameterPath: "url",
     mapper: {
+        serializedName: "url",
         required: true,
+        xmlName: "url",
+        type: {
+            name: "String"
+        }
+    },
+    skipEncoding: true
+};
+const restype = {
+    parameterPath: "restype",
+    mapper: {
+        defaultValue: "service",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'renew',
+        serializedName: "restype",
         type: {
             name: "String"
         }
     }
 };
-var action3 = {
-    parameterPath: "action",
+const comp = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "properties",
         isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'break',
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var action4 = {
-    parameterPath: "action",
+const timeoutInSeconds = {
+    parameterPath: ["options", "timeoutInSeconds"],
     mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-lease-action",
-        defaultValue: 'change',
-        type: {
-            name: "String"
-        }
-    }
-};
-var action5 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "action",
-        defaultValue: 'setAccessControl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var action6 = {
-    parameterPath: "action",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "action",
-        defaultValue: 'getAccessControl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var appendPosition = {
-    parameterPath: [
-        "options",
-        "appendPositionAccessConditions",
-        "appendPosition"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-condition-appendpos",
+        constraints: {
+            InclusiveMinimum: 0
+        },
+        serializedName: "timeout",
+        xmlName: "timeout",
         type: {
             name: "Number"
         }
     }
 };
-var blobCacheControl = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobCacheControl"
-    ],
+const version = {
+    parameterPath: "version",
     mapper: {
-        serializedName: "x-ms-blob-cache-control",
+        defaultValue: "2020-10-02",
+        isConstant: true,
+        serializedName: "x-ms-version",
         type: {
             name: "String"
         }
     }
 };
-var blobContentDisposition = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentDisposition"
-    ],
+const requestId = {
+    parameterPath: ["options", "requestId"],
     mapper: {
-        serializedName: "x-ms-blob-content-disposition",
+        serializedName: "x-ms-client-request-id",
+        xmlName: "x-ms-client-request-id",
         type: {
             name: "String"
         }
     }
 };
-var blobContentEncoding = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentEncoding"
-    ],
+const accept1 = {
+    parameterPath: "accept",
     mapper: {
-        serializedName: "x-ms-blob-content-encoding",
+        defaultValue: "application/xml",
+        isConstant: true,
+        serializedName: "Accept",
         type: {
             name: "String"
         }
     }
 };
-var blobContentLanguage = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentLanguage"
-    ],
+const comp1 = {
+    parameterPath: "comp",
     mapper: {
-        serializedName: "x-ms-blob-content-language",
+        defaultValue: "stats",
+        isConstant: true,
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var blobContentLength = {
-    parameterPath: "blobContentLength",
+const comp2 = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
-        serializedName: "x-ms-blob-content-length",
+        defaultValue: "list",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prefix = {
+    parameterPath: ["options", "prefix"],
+    mapper: {
+        serializedName: "prefix",
+        xmlName: "prefix",
+        type: {
+            name: "String"
+        }
+    }
+};
+const marker = {
+    parameterPath: ["options", "marker"],
+    mapper: {
+        serializedName: "marker",
+        xmlName: "marker",
+        type: {
+            name: "String"
+        }
+    }
+};
+const maxPageSize = {
+    parameterPath: ["options", "maxPageSize"],
+    mapper: {
+        constraints: {
+            InclusiveMinimum: 1
+        },
+        serializedName: "maxresults",
+        xmlName: "maxresults",
         type: {
             name: "Number"
         }
     }
 };
-var blobContentMD5 = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentMD5"
-    ],
+const include = {
+    parameterPath: ["options", "include"],
     mapper: {
-        serializedName: "x-ms-blob-content-md5",
+        serializedName: "include",
+        xmlName: "include",
+        xmlElementName: "ListContainersIncludeType",
         type: {
-            name: "ByteArray"
+            name: "Sequence",
+            element: {
+                type: {
+                    name: "Enum",
+                    allowedValues: ["metadata", "deleted"]
+                }
+            }
         }
-    }
+    },
+    collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var blobContentType = {
-    parameterPath: [
-        "options",
-        "blobHTTPHeaders",
-        "blobContentType"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-content-type",
-        type: {
-            name: "String"
-        }
-    }
+const keyInfo = {
+    parameterPath: "keyInfo",
+    mapper: KeyInfo
 };
-var blobSequenceNumber = {
-    parameterPath: [
-        "options",
-        "blobSequenceNumber"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-sequence-number",
-        defaultValue: 0,
-        type: {
-            name: "Number"
-        }
-    }
-};
-var blobTagsString = {
-    parameterPath: [
-        "options",
-        "blobTagsString"
-    ],
-    mapper: {
-        serializedName: "x-ms-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType0 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'PageBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType1 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'AppendBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blobType2 = {
-    parameterPath: "blobType",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-blob-type",
-        defaultValue: 'BlockBlob',
-        type: {
-            name: "String"
-        }
-    }
-};
-var blockId = {
-    parameterPath: "blockId",
-    mapper: {
-        required: true,
-        serializedName: "blockid",
-        type: {
-            name: "String"
-        }
-    }
-};
-var breakPeriod = {
-    parameterPath: [
-        "options",
-        "breakPeriod"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-break-period",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var cacheControl = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "cacheControl"
-    ],
-    mapper: {
-        serializedName: "x-ms-cache-control",
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp0 = {
+const comp3 = {
     parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "userdelegationkey",
         isConstant: true,
         serializedName: "comp",
-        defaultValue: 'properties',
         type: {
             name: "String"
         }
     }
 };
-var comp1 = {
+const restype1 = {
+    parameterPath: "restype",
+    mapper: {
+        defaultValue: "account",
+        isConstant: true,
+        serializedName: "restype",
+        type: {
+            name: "String"
+        }
+    }
+};
+const body = {
+    parameterPath: "body",
+    mapper: {
+        serializedName: "body",
+        required: true,
+        xmlName: "body",
+        type: {
+            name: "Stream"
+        }
+    }
+};
+const comp4 = {
     parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "batch",
         isConstant: true,
         serializedName: "comp",
-        defaultValue: 'stats',
         type: {
             name: "String"
         }
     }
 };
-var comp10 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'expiry',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp11 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'snapshot',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp12 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'copy',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp13 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'tier',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp14 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'query',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp15 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'tags',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp16 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'page',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp17 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'pagelist',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp18 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'incrementalcopy',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp19 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'appendblock',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp2 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'list',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp20 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'seal',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp21 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'block',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp22 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'blocklist',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp3 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'userdelegationkey',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp4 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'batch',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp5 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'blobs',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp6 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'metadata',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp7 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'acl',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp8 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'undelete',
-        type: {
-            name: "String"
-        }
-    }
-};
-var comp9 = {
-    parameterPath: "comp",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "comp",
-        defaultValue: 'lease',
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentDisposition = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentDisposition"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-disposition",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentEncoding = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentEncoding"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-encoding",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentLanguage = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentLanguage"
-    ],
-    mapper: {
-        serializedName: "x-ms-content-language",
-        type: {
-            name: "String"
-        }
-    }
-};
-var contentLength = {
+const contentLength = {
     parameterPath: "contentLength",
     mapper: {
-        required: true,
         serializedName: "Content-Length",
+        required: true,
+        xmlName: "Content-Length",
         type: {
             name: "Number"
         }
     }
 };
-var contentType = {
-    parameterPath: [
-        "options",
-        "directoryHttpHeaders",
-        "contentType"
-    ],
+const multipartContentType = {
+    parameterPath: "multipartContentType",
     mapper: {
-        serializedName: "x-ms-content-type",
+        serializedName: "Content-Type",
+        required: true,
+        xmlName: "Content-Type",
         type: {
             name: "String"
         }
     }
 };
-var copyActionAbortConstant = {
-    parameterPath: "copyActionAbortConstant",
+const comp5 = {
+    parameterPath: "comp",
     mapper: {
-        required: true,
+        defaultValue: "blobs",
         isConstant: true,
-        serializedName: "x-ms-copy-action",
-        defaultValue: 'abort',
+        serializedName: "comp",
         type: {
             name: "String"
         }
     }
 };
-var copyId = {
-    parameterPath: "copyId",
+const where = {
+    parameterPath: ["options", "where"],
     mapper: {
-        required: true,
-        serializedName: "copyid",
+        serializedName: "where",
+        xmlName: "where",
         type: {
             name: "String"
         }
     }
 };
-var copySource = {
-    parameterPath: "copySource",
+const restype2 = {
+    parameterPath: "restype",
     mapper: {
-        required: true,
-        serializedName: "x-ms-copy-source",
+        defaultValue: "container",
+        isConstant: true,
+        serializedName: "restype",
         type: {
             name: "String"
         }
     }
 };
-var defaultEncryptionScope = {
+const metadata = {
+    parameterPath: ["options", "metadata"],
+    mapper: {
+        serializedName: "x-ms-meta",
+        xmlName: "x-ms-meta",
+        type: {
+            name: "Dictionary",
+            value: { type: { name: "String" } }
+        },
+        headerCollectionPrefix: "x-ms-meta-"
+    }
+};
+const access = {
+    parameterPath: ["options", "access"],
+    mapper: {
+        serializedName: "x-ms-blob-public-access",
+        xmlName: "x-ms-blob-public-access",
+        type: {
+            name: "Enum",
+            allowedValues: ["container", "blob"]
+        }
+    }
+};
+const defaultEncryptionScope = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -16723,306 +18278,283 @@ var defaultEncryptionScope = {
     ],
     mapper: {
         serializedName: "x-ms-default-encryption-scope",
+        xmlName: "x-ms-default-encryption-scope",
         type: {
             name: "String"
         }
     }
 };
-var deletedContainerName = {
+const preventEncryptionScopeOverride = {
     parameterPath: [
         "options",
-        "deletedContainerName"
+        "containerEncryptionScope",
+        "preventEncryptionScopeOverride"
     ],
     mapper: {
-        serializedName: "x-ms-deleted-container-name",
+        serializedName: "x-ms-deny-encryption-scope-override",
+        xmlName: "x-ms-deny-encryption-scope-override",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const leaseId = {
+    parameterPath: ["options", "leaseAccessConditions", "leaseId"],
+    mapper: {
+        serializedName: "x-ms-lease-id",
+        xmlName: "x-ms-lease-id",
         type: {
             name: "String"
         }
     }
 };
-var deletedContainerVersion = {
-    parameterPath: [
-        "options",
-        "deletedContainerVersion"
-    ],
-    mapper: {
-        serializedName: "x-ms-deleted-container-version",
-        type: {
-            name: "String"
-        }
-    }
-};
-var deleteSnapshots = {
-    parameterPath: [
-        "options",
-        "deleteSnapshots"
-    ],
-    mapper: {
-        serializedName: "x-ms-delete-snapshots",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "include",
-                "only"
-            ]
-        }
-    }
-};
-var delimiter = {
-    parameterPath: "delimiter",
-    mapper: {
-        required: true,
-        serializedName: "delimiter",
-        type: {
-            name: "String"
-        }
-    }
-};
-var directoryProperties = {
-    parameterPath: [
-        "options",
-        "directoryProperties"
-    ],
-    mapper: {
-        serializedName: "x-ms-properties",
-        type: {
-            name: "String"
-        }
-    }
-};
-var duration = {
-    parameterPath: [
-        "options",
-        "duration"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-duration",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var encryptionAlgorithm = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionAlgorithm"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-algorithm",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "AES256"
-            ]
-        }
-    }
-};
-var encryptionKey = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionKey"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-key",
-        type: {
-            name: "String"
-        }
-    }
-};
-var encryptionKeySha256 = {
-    parameterPath: [
-        "options",
-        "cpkInfo",
-        "encryptionKeySha256"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-key-sha256",
-        type: {
-            name: "String"
-        }
-    }
-};
-var encryptionScope = {
-    parameterPath: [
-        "options",
-        "encryptionScope"
-    ],
-    mapper: {
-        serializedName: "x-ms-encryption-scope",
-        type: {
-            name: "String"
-        }
-    }
-};
-var expiresOn = {
-    parameterPath: [
-        "options",
-        "expiresOn"
-    ],
-    mapper: {
-        serializedName: "x-ms-expiry-time",
-        type: {
-            name: "String"
-        }
-    }
-};
-var expiryOptions = {
-    parameterPath: "expiryOptions",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-expiry-option",
-        type: {
-            name: "String"
-        }
-    }
-};
-var group = {
-    parameterPath: [
-        "options",
-        "group"
-    ],
-    mapper: {
-        serializedName: "x-ms-group",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifMatch = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifMatch"
-    ],
-    mapper: {
-        serializedName: "If-Match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifModifiedSince = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifModifiedSince"
-    ],
+const ifModifiedSince = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifModifiedSince"],
     mapper: {
         serializedName: "If-Modified-Since",
+        xmlName: "If-Modified-Since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var ifNoneMatch = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifNoneMatch"
-    ],
-    mapper: {
-        serializedName: "If-None-Match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifSequenceNumberEqualTo = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberEqualTo"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-eq",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifSequenceNumberLessThan = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberLessThan"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-lt",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifSequenceNumberLessThanOrEqualTo = {
-    parameterPath: [
-        "options",
-        "sequenceNumberAccessConditions",
-        "ifSequenceNumberLessThanOrEqualTo"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-sequence-number-le",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var ifTags = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifTags"
-    ],
-    mapper: {
-        serializedName: "x-ms-if-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var ifUnmodifiedSince = {
-    parameterPath: [
-        "options",
-        "modifiedAccessConditions",
-        "ifUnmodifiedSince"
-    ],
+const ifUnmodifiedSince = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifUnmodifiedSince"],
     mapper: {
         serializedName: "If-Unmodified-Since",
+        xmlName: "If-Unmodified-Since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var include0 = {
-    parameterPath: [
-        "options",
-        "include"
-    ],
+const comp6 = {
+    parameterPath: "comp",
     mapper: {
-        serializedName: "include",
+        defaultValue: "metadata",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp7 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "acl",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const containerAcl = {
+    parameterPath: ["options", "containerAcl"],
+    mapper: {
+        serializedName: "containerAcl",
+        xmlName: "SignedIdentifiers",
+        xmlIsWrapped: true,
+        xmlElementName: "SignedIdentifier",
         type: {
             name: "Sequence",
             element: {
                 type: {
-                    name: "Enum",
-                    allowedValues: [
-                        "metadata",
-                        "deleted"
-                    ]
+                    name: "Composite",
+                    className: "SignedIdentifier"
                 }
             }
         }
-    },
-    collectionFormat: coreHttp.QueryCollectionFormat.Csv
+    }
 };
-var include1 = {
-    parameterPath: [
-        "options",
-        "include"
-    ],
+const comp8 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "undelete",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deletedContainerName = {
+    parameterPath: ["options", "deletedContainerName"],
+    mapper: {
+        serializedName: "x-ms-deleted-container-name",
+        xmlName: "x-ms-deleted-container-name",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deletedContainerVersion = {
+    parameterPath: ["options", "deletedContainerVersion"],
+    mapper: {
+        serializedName: "x-ms-deleted-container-version",
+        xmlName: "x-ms-deleted-container-version",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp9 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "rename",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceContainerName = {
+    parameterPath: "sourceContainerName",
+    mapper: {
+        serializedName: "x-ms-source-container-name",
+        required: true,
+        xmlName: "x-ms-source-container-name",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceLeaseId = {
+    parameterPath: ["options", "sourceLeaseId"],
+    mapper: {
+        serializedName: "x-ms-source-lease-id",
+        xmlName: "x-ms-source-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp10 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "lease",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "acquire",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const duration = {
+    parameterPath: ["options", "duration"],
+    mapper: {
+        serializedName: "x-ms-lease-duration",
+        xmlName: "x-ms-lease-duration",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const proposedLeaseId = {
+    parameterPath: ["options", "proposedLeaseId"],
+    mapper: {
+        serializedName: "x-ms-proposed-lease-id",
+        xmlName: "x-ms-proposed-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action1 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "release",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const leaseId1 = {
+    parameterPath: "leaseId",
+    mapper: {
+        serializedName: "x-ms-lease-id",
+        required: true,
+        xmlName: "x-ms-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action2 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "renew",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const action3 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "break",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const breakPeriod = {
+    parameterPath: ["options", "breakPeriod"],
+    mapper: {
+        serializedName: "x-ms-lease-break-period",
+        xmlName: "x-ms-lease-break-period",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const action4 = {
+    parameterPath: "action",
+    mapper: {
+        defaultValue: "change",
+        isConstant: true,
+        serializedName: "x-ms-lease-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const proposedLeaseId1 = {
+    parameterPath: "proposedLeaseId",
+    mapper: {
+        serializedName: "x-ms-proposed-lease-id",
+        required: true,
+        xmlName: "x-ms-proposed-lease-id",
+        type: {
+            name: "String"
+        }
+    }
+};
+const include1 = {
+    parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
+        xmlName: "include",
+        xmlElementName: "ListBlobsIncludeItem",
         type: {
             name: "Sequence",
             element: {
@@ -17035,7 +18567,10 @@ var include1 = {
                         "snapshots",
                         "uncommittedblobs",
                         "versions",
-                        "tags"
+                        "tags",
+                        "immutabilitypolicy",
+                        "legalhold",
+                        "deletedwithversions"
                     ]
                 }
             }
@@ -17043,465 +18578,354 @@ var include1 = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var leaseId0 = {
-    parameterPath: [
-        "options",
-        "leaseAccessConditions",
-        "leaseId"
-    ],
-    mapper: {
-        serializedName: "x-ms-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var leaseId1 = {
-    parameterPath: "leaseId",
+const delimiter = {
+    parameterPath: "delimiter",
     mapper: {
+        serializedName: "delimiter",
         required: true,
-        serializedName: "x-ms-lease-id",
+        xmlName: "delimiter",
         type: {
             name: "String"
         }
     }
 };
-var listType = {
-    parameterPath: "listType",
-    mapper: {
-        required: true,
-        serializedName: "blocklisttype",
-        defaultValue: 'committed',
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "committed",
-                "uncommitted",
-                "all"
-            ]
-        }
-    }
-};
-var marker0 = {
-    parameterPath: [
-        "options",
-        "marker"
-    ],
-    mapper: {
-        serializedName: "marker",
-        type: {
-            name: "String"
-        }
-    }
-};
-var maxPageSize = {
-    parameterPath: [
-        "options",
-        "maxPageSize"
-    ],
-    mapper: {
-        serializedName: "maxresults",
-        constraints: {
-            InclusiveMinimum: 1
-        },
-        type: {
-            name: "Number"
-        }
-    }
-};
-var maxSize = {
-    parameterPath: [
-        "options",
-        "appendPositionAccessConditions",
-        "maxSize"
-    ],
-    mapper: {
-        serializedName: "x-ms-blob-condition-maxsize",
-        type: {
-            name: "Number"
-        }
-    }
-};
-var metadata = {
-    parameterPath: [
-        "options",
-        "metadata"
-    ],
-    mapper: {
-        serializedName: "x-ms-meta",
-        type: {
-            name: "Dictionary",
-            value: {
-                type: {
-                    name: "String"
-                }
-            }
-        },
-        headerCollectionPrefix: "x-ms-meta-"
-    }
-};
-var multipartContentType = {
-    parameterPath: "multipartContentType",
-    mapper: {
-        required: true,
-        serializedName: "Content-Type",
-        type: {
-            name: "String"
-        }
-    }
-};
-var owner = {
-    parameterPath: [
-        "options",
-        "owner"
-    ],
-    mapper: {
-        serializedName: "x-ms-owner",
-        type: {
-            name: "String"
-        }
-    }
-};
-var pageWrite0 = {
-    parameterPath: "pageWrite",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-page-write",
-        defaultValue: 'update',
-        type: {
-            name: "String"
-        }
-    }
-};
-var pageWrite1 = {
-    parameterPath: "pageWrite",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-page-write",
-        defaultValue: 'clear',
-        type: {
-            name: "String"
-        }
-    }
-};
-var pathRenameMode = {
-    parameterPath: [
-        "options",
-        "pathRenameMode"
-    ],
-    mapper: {
-        serializedName: "mode",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "legacy",
-                "posix"
-            ]
-        }
-    }
-};
-var posixAcl = {
-    parameterPath: [
-        "options",
-        "posixAcl"
-    ],
-    mapper: {
-        serializedName: "x-ms-acl",
-        type: {
-            name: "String"
-        }
-    }
-};
-var posixPermissions = {
-    parameterPath: [
-        "options",
-        "posixPermissions"
-    ],
-    mapper: {
-        serializedName: "x-ms-permissions",
-        type: {
-            name: "String"
-        }
-    }
-};
-var posixUmask = {
-    parameterPath: [
-        "options",
-        "posixUmask"
-    ],
-    mapper: {
-        serializedName: "x-ms-umask",
-        type: {
-            name: "String"
-        }
-    }
-};
-var prefix = {
-    parameterPath: [
-        "options",
-        "prefix"
-    ],
-    mapper: {
-        serializedName: "prefix",
-        type: {
-            name: "String"
-        }
-    }
-};
-var preventEncryptionScopeOverride = {
-    parameterPath: [
-        "options",
-        "containerEncryptionScope",
-        "preventEncryptionScopeOverride"
-    ],
-    mapper: {
-        serializedName: "x-ms-deny-encryption-scope-override",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var prevsnapshot = {
-    parameterPath: [
-        "options",
-        "prevsnapshot"
-    ],
-    mapper: {
-        serializedName: "prevsnapshot",
-        type: {
-            name: "String"
-        }
-    }
-};
-var prevSnapshotUrl = {
-    parameterPath: [
-        "options",
-        "prevSnapshotUrl"
-    ],
-    mapper: {
-        serializedName: "x-ms-previous-snapshot-url",
-        type: {
-            name: "String"
-        }
-    }
-};
-var proposedLeaseId0 = {
-    parameterPath: [
-        "options",
-        "proposedLeaseId"
-    ],
-    mapper: {
-        serializedName: "x-ms-proposed-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var proposedLeaseId1 = {
-    parameterPath: "proposedLeaseId",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-proposed-lease-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var range0 = {
-    parameterPath: [
-        "options",
-        "range"
-    ],
-    mapper: {
-        serializedName: "x-ms-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var range1 = {
-    parameterPath: "range",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var rangeGetContentCRC64 = {
-    parameterPath: [
-        "options",
-        "rangeGetContentCRC64"
-    ],
-    mapper: {
-        serializedName: "x-ms-range-get-content-crc64",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var rangeGetContentMD5 = {
-    parameterPath: [
-        "options",
-        "rangeGetContentMD5"
-    ],
-    mapper: {
-        serializedName: "x-ms-range-get-content-md5",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var rehydratePriority = {
-    parameterPath: [
-        "options",
-        "rehydratePriority"
-    ],
-    mapper: {
-        serializedName: "x-ms-rehydrate-priority",
-        type: {
-            name: "String"
-        }
-    }
-};
-var renameSource = {
-    parameterPath: "renameSource",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-rename-source",
-        type: {
-            name: "String"
-        }
-    }
-};
-var requestId = {
-    parameterPath: [
-        "options",
-        "requestId"
-    ],
-    mapper: {
-        serializedName: "x-ms-client-request-id",
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype0 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'service',
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype1 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'account',
-        type: {
-            name: "String"
-        }
-    }
-};
-var restype2 = {
-    parameterPath: "restype",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "restype",
-        defaultValue: 'container',
-        type: {
-            name: "String"
-        }
-    }
-};
-var sealBlob = {
-    parameterPath: [
-        "options",
-        "sealBlob"
-    ],
-    mapper: {
-        serializedName: "x-ms-seal-blob",
-        type: {
-            name: "Boolean"
-        }
-    }
-};
-var sequenceNumberAction = {
-    parameterPath: "sequenceNumberAction",
-    mapper: {
-        required: true,
-        serializedName: "x-ms-sequence-number-action",
-        type: {
-            name: "Enum",
-            allowedValues: [
-                "max",
-                "update",
-                "increment"
-            ]
-        }
-    }
-};
-var snapshot = {
-    parameterPath: [
-        "options",
-        "snapshot"
-    ],
+const snapshot = {
+    parameterPath: ["options", "snapshot"],
     mapper: {
         serializedName: "snapshot",
+        xmlName: "snapshot",
         type: {
             name: "String"
         }
     }
 };
-var sourceContentCrc64 = {
-    parameterPath: [
-        "options",
-        "sourceContentCrc64"
-    ],
+const versionId = {
+    parameterPath: ["options", "versionId"],
     mapper: {
-        serializedName: "x-ms-source-content-crc64",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var sourceContentMD5 = {
-    parameterPath: [
-        "options",
-        "sourceContentMD5"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-content-md5",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var sourceIfMatch = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfMatch"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-match",
+        serializedName: "versionid",
+        xmlName: "versionid",
         type: {
             name: "String"
         }
     }
 };
-var sourceIfModifiedSince = {
+const range = {
+    parameterPath: ["options", "range"],
+    mapper: {
+        serializedName: "x-ms-range",
+        xmlName: "x-ms-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const rangeGetContentMD5 = {
+    parameterPath: ["options", "rangeGetContentMD5"],
+    mapper: {
+        serializedName: "x-ms-range-get-content-md5",
+        xmlName: "x-ms-range-get-content-md5",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const rangeGetContentCRC64 = {
+    parameterPath: ["options", "rangeGetContentCRC64"],
+    mapper: {
+        serializedName: "x-ms-range-get-content-crc64",
+        xmlName: "x-ms-range-get-content-crc64",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const encryptionKey = {
+    parameterPath: ["options", "cpkInfo", "encryptionKey"],
+    mapper: {
+        serializedName: "x-ms-encryption-key",
+        xmlName: "x-ms-encryption-key",
+        type: {
+            name: "String"
+        }
+    }
+};
+const encryptionKeySha256 = {
+    parameterPath: ["options", "cpkInfo", "encryptionKeySha256"],
+    mapper: {
+        serializedName: "x-ms-encryption-key-sha256",
+        xmlName: "x-ms-encryption-key-sha256",
+        type: {
+            name: "String"
+        }
+    }
+};
+const encryptionAlgorithm = {
+    parameterPath: ["options", "encryptionAlgorithm"],
+    mapper: {
+        defaultValue: "AES256",
+        isConstant: true,
+        serializedName: "x-ms-encryption-algorithm",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifMatch = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifMatch"],
+    mapper: {
+        serializedName: "If-Match",
+        xmlName: "If-Match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifNoneMatch = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifNoneMatch"],
+    mapper: {
+        serializedName: "If-None-Match",
+        xmlName: "If-None-Match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifTags = {
+    parameterPath: ["options", "modifiedAccessConditions", "ifTags"],
+    mapper: {
+        serializedName: "x-ms-if-tags",
+        xmlName: "x-ms-if-tags",
+        type: {
+            name: "String"
+        }
+    }
+};
+const deleteSnapshots = {
+    parameterPath: ["options", "deleteSnapshots"],
+    mapper: {
+        serializedName: "x-ms-delete-snapshots",
+        xmlName: "x-ms-delete-snapshots",
+        type: {
+            name: "Enum",
+            allowedValues: ["include", "only"]
+        }
+    }
+};
+const blobDeleteType = {
+    parameterPath: ["options", "blobDeleteType"],
+    mapper: {
+        serializedName: "deletetype",
+        xmlName: "deletetype",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp11 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "expiry",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const expiryOptions = {
+    parameterPath: "expiryOptions",
+    mapper: {
+        serializedName: "x-ms-expiry-option",
+        required: true,
+        xmlName: "x-ms-expiry-option",
+        type: {
+            name: "String"
+        }
+    }
+};
+const expiresOn = {
+    parameterPath: ["options", "expiresOn"],
+    mapper: {
+        serializedName: "x-ms-expiry-time",
+        xmlName: "x-ms-expiry-time",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobCacheControl = {
+    parameterPath: ["options", "blobHttpHeaders", "blobCacheControl"],
+    mapper: {
+        serializedName: "x-ms-blob-cache-control",
+        xmlName: "x-ms-blob-cache-control",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentType = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentType"],
+    mapper: {
+        serializedName: "x-ms-blob-content-type",
+        xmlName: "x-ms-blob-content-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentMD5 = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentMD5"],
+    mapper: {
+        serializedName: "x-ms-blob-content-md5",
+        xmlName: "x-ms-blob-content-md5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const blobContentEncoding = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentEncoding"],
+    mapper: {
+        serializedName: "x-ms-blob-content-encoding",
+        xmlName: "x-ms-blob-content-encoding",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentLanguage = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentLanguage"],
+    mapper: {
+        serializedName: "x-ms-blob-content-language",
+        xmlName: "x-ms-blob-content-language",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentDisposition = {
+    parameterPath: ["options", "blobHttpHeaders", "blobContentDisposition"],
+    mapper: {
+        serializedName: "x-ms-blob-content-disposition",
+        xmlName: "x-ms-blob-content-disposition",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp12 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "immutabilityPolicies",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const immutabilityPolicyExpiry = {
+    parameterPath: ["options", "immutabilityPolicyExpiry"],
+    mapper: {
+        serializedName: "x-ms-immutability-policy-until-date",
+        xmlName: "x-ms-immutability-policy-until-date",
+        type: {
+            name: "DateTimeRfc1123"
+        }
+    }
+};
+const immutabilityPolicyMode = {
+    parameterPath: ["options", "immutabilityPolicyMode"],
+    mapper: {
+        serializedName: "x-ms-immutability-policy-mode",
+        xmlName: "x-ms-immutability-policy-mode",
+        type: {
+            name: "Enum",
+            allowedValues: ["Mutable", "Unlocked", "Locked"]
+        }
+    }
+};
+const comp13 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "legalhold",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const legalHold = {
+    parameterPath: "legalHold",
+    mapper: {
+        serializedName: "x-ms-legal-hold",
+        required: true,
+        xmlName: "x-ms-legal-hold",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const encryptionScope = {
+    parameterPath: ["options", "encryptionScope"],
+    mapper: {
+        serializedName: "x-ms-encryption-scope",
+        xmlName: "x-ms-encryption-scope",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp14 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "snapshot",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tier = {
+    parameterPath: ["options", "tier"],
+    mapper: {
+        serializedName: "x-ms-access-tier",
+        xmlName: "x-ms-access-tier",
+        type: {
+            name: "Enum",
+            allowedValues: [
+                "P4",
+                "P6",
+                "P10",
+                "P15",
+                "P20",
+                "P30",
+                "P40",
+                "P50",
+                "P60",
+                "P70",
+                "P80",
+                "Hot",
+                "Cool",
+                "Archive"
+            ]
+        }
+    }
+};
+const rehydratePriority = {
+    parameterPath: ["options", "rehydratePriority"],
+    mapper: {
+        serializedName: "x-ms-rehydrate-priority",
+        xmlName: "x-ms-rehydrate-priority",
+        type: {
+            name: "Enum",
+            allowedValues: ["High", "Standard"]
+        }
+    }
+};
+const sourceIfModifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -17509,38 +18933,13 @@ var sourceIfModifiedSince = {
     ],
     mapper: {
         serializedName: "x-ms-source-if-modified-since",
+        xmlName: "x-ms-source-if-modified-since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var sourceIfNoneMatch = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfNoneMatch"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-none-match",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceIfTags = {
-    parameterPath: [
-        "options",
-        "sourceModifiedAccessConditions",
-        "sourceIfTags"
-    ],
-    mapper: {
-        serializedName: "x-ms-source-if-tags",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceIfUnmodifiedSince = {
+const sourceIfUnmodifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -17548,301 +18947,765 @@ var sourceIfUnmodifiedSince = {
     ],
     mapper: {
         serializedName: "x-ms-source-if-unmodified-since",
+        xmlName: "x-ms-source-if-unmodified-since",
         type: {
             name: "DateTimeRfc1123"
         }
     }
 };
-var sourceLeaseId = {
+const sourceIfMatch = {
+    parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfMatch"],
+    mapper: {
+        serializedName: "x-ms-source-if-match",
+        xmlName: "x-ms-source-if-match",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceIfNoneMatch = {
     parameterPath: [
         "options",
-        "sourceLeaseId"
+        "sourceModifiedAccessConditions",
+        "sourceIfNoneMatch"
     ],
     mapper: {
-        serializedName: "x-ms-source-lease-id",
+        serializedName: "x-ms-source-if-none-match",
+        xmlName: "x-ms-source-if-none-match",
         type: {
             name: "String"
         }
     }
 };
-var sourceRange0 = {
-    parameterPath: "sourceRange",
+const sourceIfTags = {
+    parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfTags"],
     mapper: {
-        required: true,
-        serializedName: "x-ms-source-range",
+        serializedName: "x-ms-source-if-tags",
+        xmlName: "x-ms-source-if-tags",
         type: {
             name: "String"
         }
     }
 };
-var sourceRange1 = {
-    parameterPath: [
-        "options",
-        "sourceRange"
-    ],
+const copySource = {
+    parameterPath: "copySource",
     mapper: {
-        serializedName: "x-ms-source-range",
-        type: {
-            name: "String"
-        }
-    }
-};
-var sourceUrl = {
-    parameterPath: "sourceUrl",
-    mapper: {
-        required: true,
         serializedName: "x-ms-copy-source",
-        type: {
-            name: "String"
-        }
-    }
-};
-var tier0 = {
-    parameterPath: [
-        "options",
-        "tier"
-    ],
-    mapper: {
-        serializedName: "x-ms-access-tier",
-        type: {
-            name: "String"
-        }
-    }
-};
-var tier1 = {
-    parameterPath: "tier",
-    mapper: {
         required: true,
-        serializedName: "x-ms-access-tier",
+        xmlName: "x-ms-copy-source",
         type: {
             name: "String"
         }
     }
 };
-var timeoutInSeconds = {
-    parameterPath: [
-        "options",
-        "timeoutInSeconds"
-    ],
+const blobTagsString = {
+    parameterPath: ["options", "blobTagsString"],
     mapper: {
-        serializedName: "timeout",
-        constraints: {
-            InclusiveMinimum: 0
-        },
+        serializedName: "x-ms-tags",
+        xmlName: "x-ms-tags",
         type: {
-            name: "Number"
+            name: "String"
         }
     }
 };
-var transactionalContentCrc64 = {
-    parameterPath: [
-        "options",
-        "transactionalContentCrc64"
-    ],
+const sealBlob = {
+    parameterPath: ["options", "sealBlob"],
     mapper: {
-        serializedName: "x-ms-content-crc64",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var transactionalContentMD5 = {
-    parameterPath: [
-        "options",
-        "transactionalContentMD5"
-    ],
-    mapper: {
-        serializedName: "Content-MD5",
-        type: {
-            name: "ByteArray"
-        }
-    }
-};
-var upn = {
-    parameterPath: [
-        "options",
-        "upn"
-    ],
-    mapper: {
-        serializedName: "upn",
+        serializedName: "x-ms-seal-blob",
+        xmlName: "x-ms-seal-blob",
         type: {
             name: "Boolean"
         }
     }
 };
-var url = {
-    parameterPath: "url",
+const legalHold1 = {
+    parameterPath: ["options", "legalHold"],
     mapper: {
-        required: true,
-        serializedName: "url",
-        defaultValue: '',
+        serializedName: "x-ms-legal-hold",
+        xmlName: "x-ms-legal-hold",
         type: {
-            name: "String"
-        }
-    },
-    skipEncoding: true
-};
-var version = {
-    parameterPath: "version",
-    mapper: {
-        required: true,
-        isConstant: true,
-        serializedName: "x-ms-version",
-        defaultValue: '2019-12-12',
-        type: {
-            name: "String"
+            name: "Boolean"
         }
     }
 };
-var versionId = {
-    parameterPath: [
-        "options",
-        "versionId"
-    ],
-    mapper: {
-        serializedName: "versionid",
-        type: {
-            name: "String"
-        }
-    }
-};
-var where = {
-    parameterPath: [
-        "options",
-        "where"
-    ],
-    mapper: {
-        serializedName: "where",
-        type: {
-            name: "String"
-        }
-    }
-};
-var xMsRequiresSync = {
+const xMsRequiresSync = {
     parameterPath: "xMsRequiresSync",
     mapper: {
-        required: true,
+        defaultValue: "true",
         isConstant: true,
         serializedName: "x-ms-requires-sync",
-        defaultValue: 'true',
         type: {
             name: "String"
         }
     }
 };
+const sourceContentMD5 = {
+    parameterPath: ["options", "sourceContentMD5"],
+    mapper: {
+        serializedName: "x-ms-source-content-md5",
+        xmlName: "x-ms-source-content-md5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const copySourceAuthorization = {
+    parameterPath: ["options", "copySourceAuthorization"],
+    mapper: {
+        serializedName: "x-ms-copy-source-authorization",
+        xmlName: "x-ms-copy-source-authorization",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp15 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "copy",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copyActionAbortConstant = {
+    parameterPath: "copyActionAbortConstant",
+    mapper: {
+        defaultValue: "abort",
+        isConstant: true,
+        serializedName: "x-ms-copy-action",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copyId = {
+    parameterPath: "copyId",
+    mapper: {
+        serializedName: "copyid",
+        required: true,
+        xmlName: "copyid",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp16 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "tier",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tier1 = {
+    parameterPath: "tier",
+    mapper: {
+        serializedName: "x-ms-access-tier",
+        required: true,
+        xmlName: "x-ms-access-tier",
+        type: {
+            name: "Enum",
+            allowedValues: [
+                "P4",
+                "P6",
+                "P10",
+                "P15",
+                "P20",
+                "P30",
+                "P40",
+                "P50",
+                "P60",
+                "P70",
+                "P80",
+                "Hot",
+                "Cool",
+                "Archive"
+            ]
+        }
+    }
+};
+const queryRequest = {
+    parameterPath: ["options", "queryRequest"],
+    mapper: QueryRequest
+};
+const comp17 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "query",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp18 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "tags",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const tags = {
+    parameterPath: ["options", "tags"],
+    mapper: BlobTags
+};
+const transactionalContentMD5 = {
+    parameterPath: ["options", "transactionalContentMD5"],
+    mapper: {
+        serializedName: "Content-MD5",
+        xmlName: "Content-MD5",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const transactionalContentCrc64 = {
+    parameterPath: ["options", "transactionalContentCrc64"],
+    mapper: {
+        serializedName: "x-ms-content-crc64",
+        xmlName: "x-ms-content-crc64",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const blobType = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "PageBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobContentLength = {
+    parameterPath: "blobContentLength",
+    mapper: {
+        serializedName: "x-ms-blob-content-length",
+        required: true,
+        xmlName: "x-ms-blob-content-length",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const blobSequenceNumber = {
+    parameterPath: ["options", "blobSequenceNumber"],
+    mapper: {
+        serializedName: "x-ms-blob-sequence-number",
+        xmlName: "x-ms-blob-sequence-number",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const contentType1 = {
+    parameterPath: ["options", "contentType"],
+    mapper: {
+        defaultValue: "application/octet-stream",
+        isConstant: true,
+        serializedName: "Content-Type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const body1 = {
+    parameterPath: "body",
+    mapper: {
+        serializedName: "body",
+        required: true,
+        xmlName: "body",
+        type: {
+            name: "Stream"
+        }
+    }
+};
+const accept2 = {
+    parameterPath: "accept",
+    mapper: {
+        defaultValue: "application/xml",
+        isConstant: true,
+        serializedName: "Accept",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp19 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "page",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const pageWrite = {
+    parameterPath: "pageWrite",
+    mapper: {
+        defaultValue: "update",
+        isConstant: true,
+        serializedName: "x-ms-page-write",
+        type: {
+            name: "String"
+        }
+    }
+};
+const ifSequenceNumberLessThanOrEqualTo = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberLessThanOrEqualTo"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-le",
+        xmlName: "x-ms-if-sequence-number-le",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const ifSequenceNumberLessThan = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberLessThan"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-lt",
+        xmlName: "x-ms-if-sequence-number-lt",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const ifSequenceNumberEqualTo = {
+    parameterPath: [
+        "options",
+        "sequenceNumberAccessConditions",
+        "ifSequenceNumberEqualTo"
+    ],
+    mapper: {
+        serializedName: "x-ms-if-sequence-number-eq",
+        xmlName: "x-ms-if-sequence-number-eq",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const pageWrite1 = {
+    parameterPath: "pageWrite",
+    mapper: {
+        defaultValue: "clear",
+        isConstant: true,
+        serializedName: "x-ms-page-write",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceUrl = {
+    parameterPath: "sourceUrl",
+    mapper: {
+        serializedName: "x-ms-copy-source",
+        required: true,
+        xmlName: "x-ms-copy-source",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceRange = {
+    parameterPath: "sourceRange",
+    mapper: {
+        serializedName: "x-ms-source-range",
+        required: true,
+        xmlName: "x-ms-source-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sourceContentCrc64 = {
+    parameterPath: ["options", "sourceContentCrc64"],
+    mapper: {
+        serializedName: "x-ms-source-content-crc64",
+        xmlName: "x-ms-source-content-crc64",
+        type: {
+            name: "ByteArray"
+        }
+    }
+};
+const range1 = {
+    parameterPath: "range",
+    mapper: {
+        serializedName: "x-ms-range",
+        required: true,
+        xmlName: "x-ms-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp20 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "pagelist",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prevsnapshot = {
+    parameterPath: ["options", "prevsnapshot"],
+    mapper: {
+        serializedName: "prevsnapshot",
+        xmlName: "prevsnapshot",
+        type: {
+            name: "String"
+        }
+    }
+};
+const prevSnapshotUrl = {
+    parameterPath: ["options", "prevSnapshotUrl"],
+    mapper: {
+        serializedName: "x-ms-previous-snapshot-url",
+        xmlName: "x-ms-previous-snapshot-url",
+        type: {
+            name: "String"
+        }
+    }
+};
+const sequenceNumberAction = {
+    parameterPath: "sequenceNumberAction",
+    mapper: {
+        serializedName: "x-ms-sequence-number-action",
+        required: true,
+        xmlName: "x-ms-sequence-number-action",
+        type: {
+            name: "Enum",
+            allowedValues: ["max", "update", "increment"]
+        }
+    }
+};
+const comp21 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "incrementalcopy",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobType1 = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "AppendBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp22 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "appendblock",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const maxSize = {
+    parameterPath: ["options", "appendPositionAccessConditions", "maxSize"],
+    mapper: {
+        serializedName: "x-ms-blob-condition-maxsize",
+        xmlName: "x-ms-blob-condition-maxsize",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const appendPosition = {
+    parameterPath: [
+        "options",
+        "appendPositionAccessConditions",
+        "appendPosition"
+    ],
+    mapper: {
+        serializedName: "x-ms-blob-condition-appendpos",
+        xmlName: "x-ms-blob-condition-appendpos",
+        type: {
+            name: "Number"
+        }
+    }
+};
+const sourceRange1 = {
+    parameterPath: ["options", "sourceRange"],
+    mapper: {
+        serializedName: "x-ms-source-range",
+        xmlName: "x-ms-source-range",
+        type: {
+            name: "String"
+        }
+    }
+};
+const comp23 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "seal",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blobType2 = {
+    parameterPath: "blobType",
+    mapper: {
+        defaultValue: "BlockBlob",
+        isConstant: true,
+        serializedName: "x-ms-blob-type",
+        type: {
+            name: "String"
+        }
+    }
+};
+const copySourceBlobProperties = {
+    parameterPath: ["options", "copySourceBlobProperties"],
+    mapper: {
+        serializedName: "x-ms-copy-source-blob-properties",
+        xmlName: "x-ms-copy-source-blob-properties",
+        type: {
+            name: "Boolean"
+        }
+    }
+};
+const comp24 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "block",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blockId = {
+    parameterPath: "blockId",
+    mapper: {
+        serializedName: "blockid",
+        required: true,
+        xmlName: "blockid",
+        type: {
+            name: "String"
+        }
+    }
+};
+const blocks = {
+    parameterPath: "blocks",
+    mapper: BlockLookupList
+};
+const comp25 = {
+    parameterPath: "comp",
+    mapper: {
+        defaultValue: "blocklist",
+        isConstant: true,
+        serializedName: "comp",
+        type: {
+            name: "String"
+        }
+    }
+};
+const listType = {
+    parameterPath: "listType",
+    mapper: {
+        defaultValue: "committed",
+        serializedName: "blocklisttype",
+        required: true,
+        xmlName: "blocklisttype",
+        type: {
+            name: "Enum",
+            allowedValues: ["committed", "uncommitted", "all"]
+        }
+    }
+};
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Service. */
-var Service = /** @class */ (function () {
+class Service {
     /**
-     * Create a Service.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Service class.
+     * @param client Reference to the service client
      */
-    function Service(client) {
+    constructor(client) {
         this.client = client;
     }
-    Service.prototype.setProperties = function (blobServiceProperties, options, callback) {
-        return this.client.sendOperationRequest({
-            blobServiceProperties: blobServiceProperties,
-            options: options
-        }, setPropertiesOperationSpec, callback);
-    };
-    Service.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec, callback);
-    };
-    Service.prototype.getStatistics = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getStatisticsOperationSpec, callback);
-    };
-    Service.prototype.listContainersSegment = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, listContainersSegmentOperationSpec, callback);
-    };
-    Service.prototype.getUserDelegationKey = function (keyInfo, options, callback) {
-        return this.client.sendOperationRequest({
-            keyInfo: keyInfo,
-            options: options
-        }, getUserDelegationKeyOperationSpec, callback);
-    };
-    Service.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec, callback);
-    };
-    Service.prototype.submitBatch = function (body, contentLength, multipartContentType, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            options: options
-        }, submitBatchOperationSpec, callback);
-    };
-    Service.prototype.filterBlobs = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, filterBlobsOperationSpec, callback);
-    };
-    return Service;
-}());
+    /**
+     * Sets properties for a storage account's Blob service endpoint, including properties for Storage
+     * Analytics and CORS (Cross-Origin Resource Sharing) rules
+     * @param blobServiceProperties The StorageService properties.
+     * @param options The options parameters.
+     */
+    setProperties(blobServiceProperties, options) {
+        const operationArguments = {
+            blobServiceProperties,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setPropertiesOperationSpec);
+    }
+    /**
+     * gets the properties of a storage account's Blob service, including properties for Storage Analytics
+     * and CORS (Cross-Origin Resource Sharing) rules.
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);
+    }
+    /**
+     * Retrieves statistics related to replication for the Blob service. It is only available on the
+     * secondary location endpoint when read-access geo-redundant replication is enabled for the storage
+     * account.
+     * @param options The options parameters.
+     */
+    getStatistics(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getStatisticsOperationSpec);
+    }
+    /**
+     * The List Containers Segment operation returns a list of the containers under the specified account
+     * @param options The options parameters.
+     */
+    listContainersSegment(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listContainersSegmentOperationSpec);
+    }
+    /**
+     * Retrieves a user delegation key for the Blob service. This is only a valid operation when using
+     * bearer token authentication.
+     * @param keyInfo Key information
+     * @param options The options parameters.
+     */
+    getUserDelegationKey(keyInfo, options) {
+        const operationArguments = {
+            keyInfo,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getUserDelegationKeyOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);
+    }
+    /**
+     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
+     * @param contentLength The length of the request.
+     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
+     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);
+    }
+    /**
+     * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a
+     * given search expression.  Filter blobs searches across all containers within a storage account but
+     * can be scoped within the expression to a single container.
+     * @param options The options parameters.
+     */
+    filterBlobs(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer = new coreHttp.Serializer(Mappers, true);
-var setPropertiesOperationSpec = {
+const xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const setPropertiesOperationSpec = {
+    path: "/",
     httpMethod: "PUT",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp0
-    ],
-    headerParameters: [
-        version,
-        requestId
-    ],
-    requestBody: {
-        parameterPath: "blobServiceProperties",
-        mapper: tslib.__assign(tslib.__assign({}, BlobServiceProperties), { required: true })
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         202: {
             headersMapper: ServiceSetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceSetPropertiesHeaders
+            headersMapper: ServiceSetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getPropertiesOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
+    requestBody: blobServiceProperties,
     queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp0
+        restype,
+        comp,
+        timeoutInSeconds
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const getPropertiesOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobServiceProperties,
@@ -17850,26 +19713,26 @@ var getPropertiesOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetPropertiesHeaders
+            headersMapper: ServiceGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getStatisticsOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        timeoutInSeconds,
-        restype0,
-        comp1
+        restype,
+        comp,
+        timeoutInSeconds
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer
+};
+const getStatisticsOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobServiceStatistics,
@@ -17877,29 +19740,26 @@ var getStatisticsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetStatisticsHeaders
+            headersMapper: ServiceGetStatisticsExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var listContainersSegmentOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        marker0,
-        maxPageSize,
-        include0,
+        restype,
         timeoutInSeconds,
-        comp2
+        comp1
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer
+};
+const listContainersSegmentOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListContainersSegmentResponse,
@@ -17907,31 +19767,29 @@ var listContainersSegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceListContainersSegmentHeaders
+            headersMapper: ServiceListContainersSegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getUserDelegationKeyOperationSpec = {
-    httpMethod: "POST",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        restype0,
-        comp3
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
+        include
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
-    requestBody: {
-        parameterPath: "keyInfo",
-        mapper: tslib.__assign(tslib.__assign({}, KeyInfo), { required: true })
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer
+};
+const getUserDelegationKeyOperationSpec = {
+    path: "/",
+    httpMethod: "POST",
     responses: {
         200: {
             bodyMapper: UserDelegationKey,
@@ -17939,96 +19797,80 @@ var getUserDelegationKeyOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetUserDelegationKeyHeaders
+            headersMapper: ServiceGetUserDelegationKeyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var getAccountInfoOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
+    requestBody: keyInfo,
     queryParameters: [
-        restype1,
-        comp0
+        restype,
+        timeoutInSeconds,
+        comp3
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        contentType,
+        accept,
+        version,
+        requestId
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const getAccountInfoOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ServiceGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceGetAccountInfoHeaders
+            headersMapper: ServiceGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer
+    serializer: xmlSerializer
 };
-var submitBatchOperationSpec = {
+const submitBatchOperationSpec = {
+    path: "/",
     httpMethod: "POST",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp4
-    ],
-    headerParameters: [
-        contentLength,
-        multipartContentType,
-        version,
-        requestId
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         202: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: ServiceSubmitBatchHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceSubmitBatchHeaders
+            headersMapper: ServiceSubmitBatchExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer
-};
-var filterBlobsOperationSpec = {
-    httpMethod: "GET",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        where,
-        marker0,
-        maxPageSize,
-        comp5
-    ],
+    requestBody: body,
+    queryParameters: [timeoutInSeconds, comp4],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
-        requestId
+        requestId,
+        contentLength,
+        multipartContentType
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer
+};
+const filterBlobsOperationSpec = {
+    path: "/",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: FilterBlobSegment,
@@ -18036,568 +19878,672 @@ var filterBlobsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ServiceFilterBlobsHeaders
+            headersMapper: ServiceFilterBlobsExceptionHeaders
         }
     },
+    queryParameters: [
+        timeoutInSeconds,
+        marker,
+        maxPageSize,
+        comp5,
+        where
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1
+    ],
     isXML: true,
-    serializer: serializer
+    serializer: xmlSerializer
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$1 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    AccessPolicy: AccessPolicy,
-    BlobFlatListSegment: BlobFlatListSegment,
-    BlobHierarchyListSegment: BlobHierarchyListSegment,
-    BlobItemInternal: BlobItemInternal,
-    BlobPrefix: BlobPrefix,
-    BlobPropertiesInternal: BlobPropertiesInternal,
-    BlobTag: BlobTag,
-    BlobTags: BlobTags,
-    ContainerAcquireLeaseHeaders: ContainerAcquireLeaseHeaders,
-    ContainerBreakLeaseHeaders: ContainerBreakLeaseHeaders,
-    ContainerChangeLeaseHeaders: ContainerChangeLeaseHeaders,
-    ContainerCreateHeaders: ContainerCreateHeaders,
-    ContainerDeleteHeaders: ContainerDeleteHeaders,
-    ContainerGetAccessPolicyHeaders: ContainerGetAccessPolicyHeaders,
-    ContainerGetAccountInfoHeaders: ContainerGetAccountInfoHeaders,
-    ContainerGetPropertiesHeaders: ContainerGetPropertiesHeaders,
-    ContainerListBlobFlatSegmentHeaders: ContainerListBlobFlatSegmentHeaders,
-    ContainerListBlobHierarchySegmentHeaders: ContainerListBlobHierarchySegmentHeaders,
-    ContainerReleaseLeaseHeaders: ContainerReleaseLeaseHeaders,
-    ContainerRenewLeaseHeaders: ContainerRenewLeaseHeaders,
-    ContainerRestoreHeaders: ContainerRestoreHeaders,
-    ContainerSetAccessPolicyHeaders: ContainerSetAccessPolicyHeaders,
-    ContainerSetMetadataHeaders: ContainerSetMetadataHeaders,
-    ListBlobsFlatSegmentResponse: ListBlobsFlatSegmentResponse,
-    ListBlobsHierarchySegmentResponse: ListBlobsHierarchySegmentResponse,
-    SignedIdentifier: SignedIdentifier,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a Container. */
-var Container = /** @class */ (function () {
+class Container {
     /**
-     * Create a Container.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Container class.
+     * @param client Reference to the service client
      */
-    function Container(client) {
+    constructor(client) {
         this.client = client;
     }
-    Container.prototype.create = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, createOperationSpec, callback);
-    };
-    Container.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec$1, callback);
-    };
-    Container.prototype.deleteMethod = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, deleteMethodOperationSpec, callback);
-    };
-    Container.prototype.setMetadata = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setMetadataOperationSpec, callback);
-    };
-    Container.prototype.getAccessPolicy = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccessPolicyOperationSpec, callback);
-    };
-    Container.prototype.setAccessPolicy = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setAccessPolicyOperationSpec, callback);
-    };
-    Container.prototype.restore = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, restoreOperationSpec, callback);
-    };
-    Container.prototype.acquireLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, acquireLeaseOperationSpec, callback);
-    };
-    Container.prototype.releaseLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, releaseLeaseOperationSpec, callback);
-    };
-    Container.prototype.renewLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, renewLeaseOperationSpec, callback);
-    };
-    Container.prototype.breakLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, breakLeaseOperationSpec, callback);
-    };
-    Container.prototype.changeLease = function (leaseId, proposedLeaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
-            options: options
-        }, changeLeaseOperationSpec, callback);
-    };
-    Container.prototype.listBlobFlatSegment = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, listBlobFlatSegmentOperationSpec, callback);
-    };
-    Container.prototype.listBlobHierarchySegment = function (delimiter, options, callback) {
-        return this.client.sendOperationRequest({
-            delimiter: delimiter,
-            options: options
-        }, listBlobHierarchySegmentOperationSpec, callback);
-    };
-    Container.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec$1, callback);
-    };
-    return Container;
-}());
+    /**
+     * creates a new container under the specified account. If the container with the same name already
+     * exists, the operation fails
+     * @param options The options parameters.
+     */
+    create(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec);
+    }
+    /**
+     * returns all user-defined metadata and system properties for the specified container. The data
+     * returned does not include the container's list of blobs
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$1);
+    }
+    /**
+     * operation marks the specified container for deletion. The container and any blobs contained within
+     * it are later deleted during garbage collection
+     * @param options The options parameters.
+     */
+    delete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);
+    }
+    /**
+     * operation sets one or more user-defined name-value pairs for the specified container.
+     * @param options The options parameters.
+     */
+    setMetadata(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);
+    }
+    /**
+     * gets the permissions for the specified container. The permissions indicate whether container data
+     * may be accessed publicly.
+     * @param options The options parameters.
+     */
+    getAccessPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);
+    }
+    /**
+     * sets the permissions for the specified container. The permissions indicate whether blobs in a
+     * container may be accessed publicly.
+     * @param options The options parameters.
+     */
+    setAccessPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);
+    }
+    /**
+     * Restores a previously-deleted container.
+     * @param options The options parameters.
+     */
+    restore(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);
+    }
+    /**
+     * Renames an existing container.
+     * @param sourceContainerName Required.  Specifies the name of the container to rename.
+     * @param options The options parameters.
+     */
+    rename(sourceContainerName, options) {
+        const operationArguments = {
+            sourceContainerName,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renameOperationSpec);
+    }
+    /**
+     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
+     * @param contentLength The length of the request.
+     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch
+     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec$1);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param options The options parameters.
+     */
+    acquireLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param options The options parameters.
+     */
+    breakLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);
+    }
+    /**
+     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
+     * be 15 to 60 seconds, or can be infinite
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
+     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+     *                        (String) for a list of valid GUID string formats.
+     * @param options The options parameters.
+     */
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);
+    }
+    /**
+     * [Update] The List Blobs operation returns a list of the blobs under the specified container
+     * @param options The options parameters.
+     */
+    listBlobFlatSegment(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);
+    }
+    /**
+     * [Update] The List Blobs operation returns a list of the blobs under the specified container
+     * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix
+     *                  element in the response body that acts as a placeholder for all blobs whose names begin with the
+     *                  same substring up to the appearance of the delimiter character. The delimiter may be a single
+     *                  character or a string.
+     * @param options The options parameters.
+     */
+    listBlobHierarchySegment(delimiter, options) {
+        const operationArguments = {
+            delimiter,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$1);
+    }
+}
 // Operation Specifications
-var serializer$1 = new coreHttp.Serializer(Mappers$1, true);
-var createOperationSpec = {
+const xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const createOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
-    headerParameters: [
-        metadata,
-        access,
-        version,
-        requestId,
-        defaultEncryptionScope,
-        preventEncryptionScopeOverride
-    ],
     responses: {
         201: {
             headersMapper: ContainerCreateHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerCreateHeaders
+            headersMapper: ContainerCreateExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var getPropertiesOperationSpec$1 = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0
+        accept1,
+        metadata,
+        access,
+        defaultEncryptionScope,
+        preventEncryptionScopeOverride
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const getPropertiesOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ContainerGetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetPropertiesHeaders
+            headersMapper: ContainerGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var deleteMethodOperationSpec = {
-    httpMethod: "DELETE",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2
-    ],
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        accept1,
+        leaseId
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const deleteOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "DELETE",
     responses: {
         202: {
             headersMapper: ContainerDeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerDeleteHeaders
+            headersMapper: ContainerDeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var setMetadataOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
+    queryParameters: [timeoutInSeconds, restype2],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const setMetadataOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: ContainerSetMetadataHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerSetMetadataExceptionHeaders
+        }
+    },
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp6
     ],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        metadata,
+        leaseId,
         ifModifiedSince
     ],
-    responses: {
-        200: {
-            headersMapper: ContainerSetMetadataHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: ContainerSetMetadataHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
-var getAccessPolicyOperationSpec = {
+const getAccessPolicyOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        restype2,
-        comp7
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        leaseId0
-    ],
     responses: {
         200: {
             bodyMapper: {
-                xmlElementName: "SignedIdentifier",
-                serializedName: "parsedResponse",
                 type: {
                     name: "Sequence",
                     element: {
-                        type: {
-                            name: "Composite",
-                            className: "SignedIdentifier"
-                        }
+                        type: { name: "Composite", className: "SignedIdentifier" }
                     }
-                }
+                },
+                serializedName: "SignedIdentifiers",
+                xmlName: "SignedIdentifiers",
+                xmlIsWrapped: true,
+                xmlElementName: "SignedIdentifier"
             },
             headersMapper: ContainerGetAccessPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetAccessPolicyHeaders
+            headersMapper: ContainerGetAccessPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var setAccessPolicyOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp7
     ],
+    urlParameters: [url],
     headerParameters: [
-        access,
         version,
         requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        accept1,
+        leaseId
     ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "containerAcl"
-        ],
-        mapper: {
-            xmlName: "SignedIdentifiers",
-            xmlElementName: "SignedIdentifier",
-            serializedName: "containerAcl",
-            type: {
-                name: "Sequence",
-                element: {
-                    type: {
-                        name: "Composite",
-                        className: "SignedIdentifier"
-                    }
-                }
-            }
-        }
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const setAccessPolicyOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: ContainerSetAccessPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerSetAccessPolicyHeaders
+            headersMapper: ContainerSetAccessPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var restoreOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
+    requestBody: containerAcl,
+    queryParameters: [
+        timeoutInSeconds,
+        restype2,
+        comp7
     ],
+    urlParameters: [url],
+    headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        access,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince
+    ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$1
+};
+const restoreOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: ContainerRestoreHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerRestoreExceptionHeaders
+        }
+    },
     queryParameters: [
         timeoutInSeconds,
         restype2,
         comp8
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1,
         deletedContainerName,
         deletedContainerVersion
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const renameOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
-        201: {
-            headersMapper: ContainerRestoreHeaders
+        200: {
+            headersMapper: ContainerRenameHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerRestoreHeaders
+            headersMapper: ContainerRenameExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var acquireLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
+        restype2,
+        comp9
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        sourceContainerName,
+        sourceLeaseId
+    ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const submitBatchOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "POST",
+    responses: {
+        202: {
+            bodyMapper: {
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
+            },
+            headersMapper: ContainerSubmitBatchHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerSubmitBatchExceptionHeaders
+        }
+    },
+    requestBody: body,
+    queryParameters: [
+        timeoutInSeconds,
+        comp4,
         restype2
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        contentLength,
+        multipartContentType
+    ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$1
+};
+const acquireLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: ContainerAcquireLeaseHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: ContainerAcquireLeaseExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        restype2,
+        comp10
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        action,
         duration,
-        proposedLeaseId0,
-        version,
-        requestId,
-        action0,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        proposedLeaseId
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const releaseLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
-        201: {
-            headersMapper: ContainerAcquireLeaseHeaders
+        200: {
+            headersMapper: ContainerReleaseLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerAcquireLeaseHeaders
+            headersMapper: ContainerReleaseLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var releaseLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         action1,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        leaseId1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const renewLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: ContainerReleaseLeaseHeaders
+            headersMapper: ContainerRenewLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerReleaseLeaseHeaders
+            headersMapper: ContainerRenewLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var renewLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         leaseId1,
-        version,
-        requestId,
-        action2,
-        ifModifiedSince,
-        ifUnmodifiedSince
+        action2
     ],
-    responses: {
-        200: {
-            headersMapper: ContainerRenewLeaseHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: ContainerRenewLeaseHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
-var breakLeaseOperationSpec = {
+const breakLeaseOperationSpec = {
+    path: "/{containerName}",
     httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9,
-        restype2
-    ],
-    headerParameters: [
-        breakPeriod,
-        version,
-        requestId,
-        action3,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
     responses: {
         202: {
             headersMapper: ContainerBreakLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerBreakLeaseHeaders
+            headersMapper: ContainerBreakLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var changeLeaseOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        comp9,
-        restype2
+        restype2,
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
-        proposedLeaseId1,
         version,
         requestId,
-        action4,
+        accept1,
         ifModifiedSince,
-        ifUnmodifiedSince
+        ifUnmodifiedSince,
+        action3,
+        breakPeriod
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const changeLeaseOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: ContainerChangeLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerChangeLeaseHeaders
+            headersMapper: ContainerChangeLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var listBlobFlatSegmentOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        marker0,
-        maxPageSize,
-        include1,
         timeoutInSeconds,
         restype2,
-        comp2
+        comp10
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        leaseId1,
+        action4,
+        proposedLeaseId1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const listBlobFlatSegmentOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListBlobsFlatSegmentResponse,
@@ -18605,32 +20551,30 @@ var listBlobFlatSegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerListBlobFlatSegmentHeaders
+            headersMapper: ContainerListBlobFlatSegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var listBlobHierarchySegmentOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        prefix,
-        delimiter,
-        marker0,
-        maxPageSize,
-        include1,
         timeoutInSeconds,
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
         restype2,
-        comp2
+        include1
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        requestId
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const listBlobHierarchySegmentOperationSpec = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: ListBlobsHierarchySegmentResponse,
@@ -18638,937 +20582,957 @@ var listBlobHierarchySegmentOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerListBlobHierarchySegmentHeaders
+            headersMapper: ContainerListBlobHierarchySegmentExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$1
-};
-var getAccountInfoOperationSpec$1 = {
-    httpMethod: "GET",
-    path: "{containerName}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        restype1,
-        comp0
+        timeoutInSeconds,
+        comp2,
+        prefix,
+        marker,
+        maxPageSize,
+        restype2,
+        include1,
+        delimiter
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        version,
+        requestId,
+        accept1
     ],
+    isXML: true,
+    serializer: xmlSerializer$1
+};
+const getAccountInfoOperationSpec$1 = {
+    path: "/{containerName}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: ContainerGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: ContainerGetAccountInfoHeaders
+            headersMapper: ContainerGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer$1
+    serializer: xmlSerializer$1
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$2 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    BlobAbortCopyFromURLHeaders: BlobAbortCopyFromURLHeaders,
-    BlobAcquireLeaseHeaders: BlobAcquireLeaseHeaders,
-    BlobBreakLeaseHeaders: BlobBreakLeaseHeaders,
-    BlobChangeLeaseHeaders: BlobChangeLeaseHeaders,
-    BlobCopyFromURLHeaders: BlobCopyFromURLHeaders,
-    BlobCreateSnapshotHeaders: BlobCreateSnapshotHeaders,
-    BlobDeleteHeaders: BlobDeleteHeaders,
-    BlobDownloadHeaders: BlobDownloadHeaders,
-    BlobGetAccessControlHeaders: BlobGetAccessControlHeaders,
-    BlobGetAccountInfoHeaders: BlobGetAccountInfoHeaders,
-    BlobGetPropertiesHeaders: BlobGetPropertiesHeaders,
-    BlobGetTagsHeaders: BlobGetTagsHeaders,
-    BlobQueryHeaders: BlobQueryHeaders,
-    BlobReleaseLeaseHeaders: BlobReleaseLeaseHeaders,
-    BlobRenameHeaders: BlobRenameHeaders,
-    BlobRenewLeaseHeaders: BlobRenewLeaseHeaders,
-    BlobSetAccessControlHeaders: BlobSetAccessControlHeaders,
-    BlobSetExpiryHeaders: BlobSetExpiryHeaders,
-    BlobSetHTTPHeadersHeaders: BlobSetHTTPHeadersHeaders,
-    BlobSetMetadataHeaders: BlobSetMetadataHeaders,
-    BlobSetTagsHeaders: BlobSetTagsHeaders,
-    BlobSetTierHeaders: BlobSetTierHeaders,
-    BlobStartCopyFromURLHeaders: BlobStartCopyFromURLHeaders,
-    BlobTag: BlobTag,
-    BlobTags: BlobTags,
-    BlobUndeleteHeaders: BlobUndeleteHeaders,
-    DataLakeStorageError: DataLakeStorageError,
-    DataLakeStorageErrorError: DataLakeStorageErrorError,
-    DelimitedTextConfiguration: DelimitedTextConfiguration,
-    JsonTextConfiguration: JsonTextConfiguration,
-    QueryFormat: QueryFormat,
-    QueryRequest: QueryRequest,
-    QuerySerialization: QuerySerialization,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a Blob. */
-var Blob$1 = /** @class */ (function () {
+class Blob$1 {
     /**
-     * Create a Blob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class Blob class.
+     * @param client Reference to the service client
      */
-    function Blob(client) {
+    constructor(client) {
         this.client = client;
     }
-    Blob.prototype.download = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, downloadOperationSpec, callback);
-    };
-    Blob.prototype.getProperties = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPropertiesOperationSpec$2, callback);
-    };
-    Blob.prototype.deleteMethod = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, deleteMethodOperationSpec$1, callback);
-    };
-    Blob.prototype.setAccessControl = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setAccessControlOperationSpec, callback);
-    };
-    Blob.prototype.getAccessControl = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccessControlOperationSpec, callback);
-    };
-    Blob.prototype.rename = function (renameSource, options, callback) {
-        return this.client.sendOperationRequest({
-            renameSource: renameSource,
-            options: options
-        }, renameOperationSpec, callback);
-    };
-    Blob.prototype.undelete = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, undeleteOperationSpec, callback);
-    };
-    Blob.prototype.setExpiry = function (expiryOptions, options, callback) {
-        return this.client.sendOperationRequest({
-            expiryOptions: expiryOptions,
-            options: options
-        }, setExpiryOperationSpec, callback);
-    };
-    Blob.prototype.setHTTPHeaders = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setHTTPHeadersOperationSpec, callback);
-    };
-    Blob.prototype.setMetadata = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setMetadataOperationSpec$1, callback);
-    };
-    Blob.prototype.acquireLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, acquireLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.releaseLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, releaseLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.renewLease = function (leaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            options: options
-        }, renewLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.changeLease = function (leaseId, proposedLeaseId, options, callback) {
-        return this.client.sendOperationRequest({
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
-            options: options
-        }, changeLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.breakLease = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, breakLeaseOperationSpec$1, callback);
-    };
-    Blob.prototype.createSnapshot = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, createSnapshotOperationSpec, callback);
-    };
-    Blob.prototype.startCopyFromURL = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, startCopyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.copyFromURL = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, copyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.abortCopyFromURL = function (copyId, options, callback) {
-        return this.client.sendOperationRequest({
-            copyId: copyId,
-            options: options
-        }, abortCopyFromURLOperationSpec, callback);
-    };
-    Blob.prototype.setTier = function (tier, options, callback) {
-        return this.client.sendOperationRequest({
-            tier: tier,
-            options: options
-        }, setTierOperationSpec, callback);
-    };
-    Blob.prototype.getAccountInfo = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getAccountInfoOperationSpec$2, callback);
-    };
-    Blob.prototype.query = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, queryOperationSpec, callback);
-    };
-    Blob.prototype.getTags = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getTagsOperationSpec, callback);
-    };
-    Blob.prototype.setTags = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, setTagsOperationSpec, callback);
-    };
-    return Blob;
-}());
+    /**
+     * The Download operation reads or downloads a blob from the system, including its metadata and
+     * properties. You can also call Download to read a snapshot.
+     * @param options The options parameters.
+     */
+    download(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);
+    }
+    /**
+     * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
+     * properties for the blob. It does not return the content of the blob.
+     * @param options The options parameters.
+     */
+    getProperties(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$2);
+    }
+    /**
+     * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is
+     * permanently removed from the storage account. If the storage account's soft delete feature is
+     * enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible
+     * immediately. However, the blob service retains the blob or snapshot for the number of days specified
+     * by the DeleteRetentionPolicy section of [Storage service properties]
+     * (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is
+     * permanently removed from the storage account. Note that you continue to be charged for the
+     * soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the
+     * "include=deleted" query parameter to discover which blobs and snapshots have been soft deleted. You
+     * can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a
+     * soft-deleted blob or snapshot causes the service to return an HTTP status code of 404
+     * (ResourceNotFound).
+     * @param options The options parameters.
+     */
+    delete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteOperationSpec$1);
+    }
+    /**
+     * Undelete a blob that was previously soft deleted
+     * @param options The options parameters.
+     */
+    undelete(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);
+    }
+    /**
+     * Sets the time a blob will expire and be deleted.
+     * @param expiryOptions Required. Indicates mode of the expiry time
+     * @param options The options parameters.
+     */
+    setExpiry(expiryOptions, options) {
+        const operationArguments = {
+            expiryOptions,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);
+    }
+    /**
+     * The Set HTTP Headers operation sets system properties on the blob
+     * @param options The options parameters.
+     */
+    setHttpHeaders(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);
+    }
+    /**
+     * The Set Immutability Policy operation sets the immutability policy on the blob
+     * @param options The options parameters.
+     */
+    setImmutabilityPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setImmutabilityPolicyOperationSpec);
+    }
+    /**
+     * The Delete Immutability Policy operation deletes the immutability policy on the blob
+     * @param options The options parameters.
+     */
+    deleteImmutabilityPolicy(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, deleteImmutabilityPolicyOperationSpec);
+    }
+    /**
+     * The Set Legal Hold operation sets a legal hold on the blob.
+     * @param legalHold Specified if a legal hold should be set on the blob.
+     * @param options The options parameters.
+     */
+    setLegalHold(legalHold, options) {
+        const operationArguments = {
+            legalHold,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setLegalHoldOperationSpec);
+    }
+    /**
+     * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
+     * name-value pairs
+     * @param options The options parameters.
+     */
+    setMetadata(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param options The options parameters.
+     */
+    acquireLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param options The options parameters.
+     */
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param leaseId Specifies the current lease ID on the resource.
+     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400
+     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor
+     *                        (String) for a list of valid GUID string formats.
+     * @param options The options parameters.
+     */
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec$1);
+    }
+    /**
+     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
+     * operations
+     * @param options The options parameters.
+     */
+    breakLease(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec$1);
+    }
+    /**
+     * The Create Snapshot operation creates a read-only snapshot of a blob
+     * @param options The options parameters.
+     */
+    createSnapshot(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);
+    }
+    /**
+     * The Start Copy From URL operation copies a blob or an internet resource to a new blob.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    startCopyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);
+    }
+    /**
+     * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return
+     * a response until the copy is complete.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    copyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);
+    }
+    /**
+     * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination
+     * blob with zero length and full metadata.
+     * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob
+     *               operation.
+     * @param options The options parameters.
+     */
+    abortCopyFromURL(copyId, options) {
+        const operationArguments = {
+            copyId,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);
+    }
+    /**
+     * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium
+     * storage account and on a block blob in a blob storage account (locally redundant storage only). A
+     * premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block
+     * blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's
+     * ETag.
+     * @param tier Indicates the tier to be set on the blob.
+     * @param options The options parameters.
+     */
+    setTier(tier, options) {
+        const operationArguments = {
+            tier,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);
+    }
+    /**
+     * Returns the sku name and account kind
+     * @param options The options parameters.
+     */
+    getAccountInfo(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$2);
+    }
+    /**
+     * The Query operation enables users to select/project on blob data by providing simple query
+     * expressions.
+     * @param options The options parameters.
+     */
+    query(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, queryOperationSpec);
+    }
+    /**
+     * The Get Tags operation enables users to get the tags associated with a blob.
+     * @param options The options parameters.
+     */
+    getTags(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);
+    }
+    /**
+     * The Set Tags operation enables users to set tags on a blob.
+     * @param options The options parameters.
+     */
+    setTags(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$2 = new coreHttp.Serializer(Mappers$2, true);
-var downloadOperationSpec = {
+const xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const downloadOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        versionId,
-        timeoutInSeconds
-    ],
-    headerParameters: [
-        range0,
-        rangeGetContentMD5,
-        rangeGetContentCRC64,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         200: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobDownloadHeaders
         },
         206: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobDownloadHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobDownloadHeaders
+            headersMapper: BlobDownloadExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getPropertiesOperationSpec$2 = {
-    httpMethod: "HEAD",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
+        timeoutInSeconds,
         snapshot,
-        versionId,
-        timeoutInSeconds
+        versionId
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        rangeGetContentMD5,
+        rangeGetContentCRC64,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const getPropertiesOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "HEAD",
     responses: {
         200: {
             headersMapper: BlobGetPropertiesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetPropertiesHeaders
+            headersMapper: BlobGetPropertiesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var deleteMethodOperationSpec$1 = {
-    httpMethod: "DELETE",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
+        timeoutInSeconds,
         snapshot,
-        versionId,
-        timeoutInSeconds
+        versionId
     ],
+    urlParameters: [url],
     headerParameters: [
-        deleteSnapshots,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const deleteOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "DELETE",
     responses: {
         202: {
             headersMapper: BlobDeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobDeleteHeaders
+            headersMapper: BlobDeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setAccessControlOperationSpec = {
-    httpMethod: "PATCH",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
-        action5
+        snapshot,
+        versionId,
+        blobDeleteType
     ],
+    urlParameters: [url],
     headerParameters: [
-        owner,
-        group,
-        posixPermissions,
-        posixAcl,
-        requestId,
-        version,
-        leaseId0,
-        ifMatch,
-        ifNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
-    responses: {
-        200: {
-            headersMapper: BlobSetAccessControlHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobSetAccessControlHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var getAccessControlOperationSpec = {
-    httpMethod: "HEAD",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        upn,
-        action6
-    ],
-    headerParameters: [
-        requestId,
-        version,
-        leaseId0,
-        ifMatch,
-        ifNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince
-    ],
-    responses: {
-        200: {
-            headersMapper: BlobGetAccessControlHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobGetAccessControlHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var renameOperationSpec = {
-    httpMethod: "PUT",
-    path: "{filesystem}/{path}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        pathRenameMode
-    ],
-    headerParameters: [
-        renameSource,
-        directoryProperties,
-        posixPermissions,
-        posixUmask,
-        sourceLeaseId,
         version,
         requestId,
-        cacheControl,
-        contentType,
-        contentEncoding,
-        contentLanguage,
-        contentDisposition,
-        leaseId0,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
+        ifTags,
+        deleteSnapshots
     ],
-    responses: {
-        201: {
-            headersMapper: BlobRenameHeaders
-        },
-        default: {
-            bodyMapper: DataLakeStorageError,
-            headersMapper: BlobRenameHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var undeleteOperationSpec = {
+const undeleteOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp8
-    ],
-    headerParameters: [
-        version,
-        requestId
-    ],
     responses: {
         200: {
             headersMapper: BlobUndeleteHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobUndeleteHeaders
+            headersMapper: BlobUndeleteExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setExpiryOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp10
-    ],
+    queryParameters: [timeoutInSeconds, comp8],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setExpiryOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetExpiryHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetExpiryExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp11],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
         expiryOptions,
         expiresOn
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setHttpHeadersOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobSetExpiryHeaders
+            headersMapper: BlobSetHttpHeadersHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetExpiryHeaders
+            headersMapper: BlobSetHttpHeadersExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setHTTPHeadersOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
         blobCacheControl,
         blobContentType,
         blobContentMD5,
         blobContentEncoding,
         blobContentLanguage,
-        blobContentDisposition,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        blobContentDisposition
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setImmutabilityPolicyOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobSetHTTPHeadersHeaders
+            headersMapper: BlobSetImmutabilityPolicyHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetHTTPHeadersHeaders
+            headersMapper: BlobSetImmutabilityPolicyExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setMetadataOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp6
-    ],
+    queryParameters: [timeoutInSeconds, comp12],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        leaseId0,
+        accept1,
+        ifUnmodifiedSince,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const deleteImmutabilityPolicyOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "DELETE",
+    responses: {
+        200: {
+            headersMapper: BlobDeleteImmutabilityPolicyHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobDeleteImmutabilityPolicyExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp12],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setLegalHoldOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetLegalHoldHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetLegalHoldExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp13],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        legalHold
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setMetadataOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobSetMetadataHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobSetMetadataExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp6],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
-        ifTags
+        ifTags,
+        encryptionScope
     ],
-    responses: {
-        200: {
-            headersMapper: BlobSetMetadataHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobSetMetadataHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var acquireLeaseOperationSpec$1 = {
+const acquireLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
-    headerParameters: [
-        duration,
-        proposedLeaseId0,
-        version,
-        requestId,
-        action0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         201: {
             headersMapper: BlobAcquireLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobAcquireLeaseHeaders
+            headersMapper: BlobAcquireLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var releaseLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        action,
+        duration,
+        proposedLeaseId,
+        ifMatch,
+        ifNoneMatch,
+        ifTags
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const releaseLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: BlobReleaseLeaseHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobReleaseLeaseExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         action1,
-        ifModifiedSince,
-        ifUnmodifiedSince,
+        leaseId1,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const renewLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobReleaseLeaseHeaders
+            headersMapper: BlobRenewLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobReleaseLeaseHeaders
+            headersMapper: BlobRenewLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var renewLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        leaseId1,
         version,
         requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        leaseId1,
         action2,
-        ifModifiedSince,
-        ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const changeLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
-            headersMapper: BlobRenewLeaseHeaders
+            headersMapper: BlobChangeLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobRenewLeaseHeaders
+            headersMapper: BlobChangeLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var changeLeaseOperationSpec$1 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
+        ifModifiedSince,
+        ifUnmodifiedSince,
         leaseId1,
-        proposedLeaseId1,
-        version,
-        requestId,
         action4,
-        ifModifiedSince,
-        ifUnmodifiedSince,
+        proposedLeaseId1,
         ifMatch,
         ifNoneMatch,
         ifTags
     ],
-    responses: {
-        200: {
-            headersMapper: BlobChangeLeaseHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobChangeLeaseHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var breakLeaseOperationSpec$1 = {
+const breakLeaseOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp9
-    ],
-    headerParameters: [
-        breakPeriod,
-        version,
-        requestId,
-        action3,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         202: {
             headersMapper: BlobBreakLeaseHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobBreakLeaseHeaders
+            headersMapper: BlobBreakLeaseExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var createSnapshotOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp11
-    ],
+    queryParameters: [timeoutInSeconds, comp10],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        accept1,
         ifModifiedSince,
         ifUnmodifiedSince,
+        action3,
+        breakPeriod,
         ifMatch,
         ifNoneMatch,
-        ifTags,
-        leaseId0
+        ifTags
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const createSnapshotOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: BlobCreateSnapshotHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobCreateSnapshotHeaders
+            headersMapper: BlobCreateSnapshotExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var startCopyFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    queryParameters: [timeoutInSeconds, comp14],
+    urlParameters: [url],
     headerParameters: [
-        metadata,
-        tier0,
-        rehydratePriority,
-        copySource,
         version,
         requestId,
-        blobTagsString,
-        sealBlob,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const startCopyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        202: {
+            headersMapper: BlobStartCopyFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobStartCopyFromURLExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        tier,
+        rehydratePriority,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
         sourceIfNoneMatch,
         sourceIfTags,
+        copySource,
+        blobTagsString,
+        sealBlob,
+        legalHold1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const copyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        202: {
+            headersMapper: BlobCopyFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlobCopyFromURLExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        metadata,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        leaseId0
-    ],
-    responses: {
-        202: {
-            headersMapper: BlobStartCopyFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobStartCopyFromURLHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$2
-};
-var copyFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
-    headerParameters: [
-        metadata,
-        tier0,
-        copySource,
-        version,
-        requestId,
-        sourceContentMD5,
-        blobTagsString,
-        xMsRequiresSync,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        tier,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
         sourceIfNoneMatch,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags,
-        leaseId0
+        copySource,
+        blobTagsString,
+        legalHold1,
+        xMsRequiresSync,
+        sourceContentMD5,
+        copySourceAuthorization
     ],
-    responses: {
-        202: {
-            headersMapper: BlobCopyFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlobCopyFromURLHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var abortCopyFromURLOperationSpec = {
+const abortCopyFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        copyId,
-        timeoutInSeconds,
-        comp12
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        copyActionAbortConstant,
-        leaseId0
-    ],
     responses: {
         204: {
             headersMapper: BlobAbortCopyFromURLHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobAbortCopyFromURLHeaders
+            headersMapper: BlobAbortCopyFromURLExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setTierOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        snapshot,
-        versionId,
         timeoutInSeconds,
-        comp13
+        comp15,
+        copyId
     ],
+    urlParameters: [url],
     headerParameters: [
-        tier1,
-        rehydratePriority,
         version,
         requestId,
-        leaseId0,
-        ifTags
+        accept1,
+        leaseId,
+        copyActionAbortConstant
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setTierOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: BlobSetTierHeaders
@@ -19578,113 +21542,99 @@ var setTierOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetTierHeaders
+            headersMapper: BlobSetTierExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getAccountInfoOperationSpec$2 = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
-        restype1,
-        comp0
+        timeoutInSeconds,
+        snapshot,
+        versionId,
+        comp16
     ],
+    urlParameters: [url],
     headerParameters: [
-        version
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifTags,
+        rehydratePriority,
+        tier1
     ],
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const getAccountInfoOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             headersMapper: BlobGetAccountInfoHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetAccountInfoHeaders
+            headersMapper: BlobGetAccountInfoExceptionHeaders
         }
     },
+    queryParameters: [comp, restype1],
+    urlParameters: [url],
+    headerParameters: [version, accept1],
     isXML: true,
-    serializer: serializer$2
+    serializer: xmlSerializer$2
 };
-var queryOperationSpec = {
+const queryOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "POST",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        comp14
-    ],
-    headerParameters: [
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "queryRequest"
-        ],
-        mapper: QueryRequest
-    },
-    contentType: "application/xml; charset=utf-8",
     responses: {
         200: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobQueryHeaders
         },
         206: {
             bodyMapper: {
-                serializedName: "parsedResponse",
-                type: {
-                    name: "Stream"
-                }
+                type: { name: "Stream" },
+                serializedName: "parsedResponse"
             },
             headersMapper: BlobQueryHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobQueryHeaders
+            headersMapper: BlobQueryExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var getTagsOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
+    requestBody: queryRequest,
     queryParameters: [
         timeoutInSeconds,
         snapshot,
-        versionId,
-        comp15
+        comp17
     ],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
         ifTags
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$2
+};
+const getTagsOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlobTags,
@@ -19692,1061 +21642,1141 @@ var getTagsOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobGetTagsHeaders
+            headersMapper: BlobGetTagsExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$2
-};
-var setTagsOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
     queryParameters: [
         timeoutInSeconds,
+        snapshot,
         versionId,
-        comp15
+        comp18
     ],
+    urlParameters: [url],
     headerParameters: [
         version,
-        transactionalContentMD5,
-        transactionalContentCrc64,
         requestId,
+        accept1,
+        leaseId,
         ifTags
     ],
-    requestBody: {
-        parameterPath: [
-            "options",
-            "tags"
-        ],
-        mapper: BlobTags
-    },
-    contentType: "application/xml; charset=utf-8",
+    isXML: true,
+    serializer: xmlSerializer$2
+};
+const setTagsOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         204: {
             headersMapper: BlobSetTagsHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlobSetTagsHeaders
+            headersMapper: BlobSetTagsExceptionHeaders
         }
     },
+    requestBody: tags,
+    queryParameters: [
+        timeoutInSeconds,
+        versionId,
+        comp18
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        contentType,
+        accept,
+        version,
+        requestId,
+        leaseId,
+        ifTags,
+        transactionalContentMD5,
+        transactionalContentCrc64
+    ],
     isXML: true,
-    serializer: serializer$2
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$2
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$3 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    ClearRange: ClearRange,
-    PageBlobClearPagesHeaders: PageBlobClearPagesHeaders,
-    PageBlobCopyIncrementalHeaders: PageBlobCopyIncrementalHeaders,
-    PageBlobCreateHeaders: PageBlobCreateHeaders,
-    PageBlobGetPageRangesDiffHeaders: PageBlobGetPageRangesDiffHeaders,
-    PageBlobGetPageRangesHeaders: PageBlobGetPageRangesHeaders,
-    PageBlobResizeHeaders: PageBlobResizeHeaders,
-    PageBlobUpdateSequenceNumberHeaders: PageBlobUpdateSequenceNumberHeaders,
-    PageBlobUploadPagesFromURLHeaders: PageBlobUploadPagesFromURLHeaders,
-    PageBlobUploadPagesHeaders: PageBlobUploadPagesHeaders,
-    PageList: PageList,
-    PageRange: PageRange,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a PageBlob. */
-var PageBlob = /** @class */ (function () {
+class PageBlob {
     /**
-     * Create a PageBlob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class PageBlob class.
+     * @param client Reference to the service client
      */
-    function PageBlob(client) {
+    constructor(client) {
         this.client = client;
     }
-    PageBlob.prototype.create = function (contentLength, blobContentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            blobContentLength: blobContentLength,
-            options: options
-        }, createOperationSpec$1, callback);
-    };
-    PageBlob.prototype.uploadPages = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, uploadPagesOperationSpec, callback);
-    };
-    PageBlob.prototype.clearPages = function (contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            options: options
-        }, clearPagesOperationSpec, callback);
-    };
-    PageBlob.prototype.uploadPagesFromURL = function (sourceUrl, sourceRange, contentLength, range, options, callback) {
-        return this.client.sendOperationRequest({
-            sourceUrl: sourceUrl,
-            sourceRange: sourceRange,
-            contentLength: contentLength,
-            range: range,
-            options: options
-        }, uploadPagesFromURLOperationSpec, callback);
-    };
-    PageBlob.prototype.getPageRanges = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPageRangesOperationSpec, callback);
-    };
-    PageBlob.prototype.getPageRangesDiff = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, getPageRangesDiffOperationSpec, callback);
-    };
-    PageBlob.prototype.resize = function (blobContentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            blobContentLength: blobContentLength,
-            options: options
-        }, resizeOperationSpec, callback);
-    };
-    PageBlob.prototype.updateSequenceNumber = function (sequenceNumberAction, options, callback) {
-        return this.client.sendOperationRequest({
-            sequenceNumberAction: sequenceNumberAction,
-            options: options
-        }, updateSequenceNumberOperationSpec, callback);
-    };
-    PageBlob.prototype.copyIncremental = function (copySource, options, callback) {
-        return this.client.sendOperationRequest({
-            copySource: copySource,
-            options: options
-        }, copyIncrementalOperationSpec, callback);
-    };
-    return PageBlob;
-}());
+    /**
+     * The Create operation creates a new page blob.
+     * @param contentLength The length of the request.
+     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
+     *                          page blob size must be aligned to a 512-byte boundary.
+     * @param options The options parameters.
+     */
+    create(contentLength, blobContentLength, options) {
+        const operationArguments = {
+            contentLength,
+            blobContentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec$1);
+    }
+    /**
+     * The Upload Pages operation writes a range of pages to a page blob
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    uploadPages(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);
+    }
+    /**
+     * The Clear Pages operation clears a set of pages from a page blob
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    clearPages(contentLength, options) {
+        const operationArguments = {
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);
+    }
+    /**
+     * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a
+     * URL
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param sourceRange Bytes of source data in the specified range. The length of this range should
+     *                    match the ContentLength header and x-ms-range/Range destination range header.
+     * @param contentLength The length of the request.
+     * @param range The range of bytes to which the source range would be written. The range should be 512
+     *              aligned and range-end is required.
+     * @param options The options parameters.
+     */
+    uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {
+        const operationArguments = {
+            sourceUrl,
+            sourceRange,
+            contentLength,
+            range,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);
+    }
+    /**
+     * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
+     * page blob
+     * @param options The options parameters.
+     */
+    getPageRanges(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);
+    }
+    /**
+     * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
+     * changed between target blob and previous snapshot.
+     * @param options The options parameters.
+     */
+    getPageRangesDiff(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);
+    }
+    /**
+     * Resize the Blob
+     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
+     *                          page blob size must be aligned to a 512-byte boundary.
+     * @param options The options parameters.
+     */
+    resize(blobContentLength, options) {
+        const operationArguments = {
+            blobContentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);
+    }
+    /**
+     * Update the sequence number of the blob
+     * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.
+     *                             This property applies to page blobs only. This property indicates how the service should modify the
+     *                             blob's sequence number
+     * @param options The options parameters.
+     */
+    updateSequenceNumber(sequenceNumberAction, options) {
+        const operationArguments = {
+            sequenceNumberAction,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);
+    }
+    /**
+     * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
+     * The snapshot is copied such that only the differential changes between the previously copied
+     * snapshot are transferred to the destination. The copied snapshots are complete copies of the
+     * original snapshot and can be read or copied from as usual. This API is supported since REST version
+     * 2016-05-31.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    copyIncremental(copySource, options) {
+        const operationArguments = {
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$3 = new coreHttp.Serializer(Mappers$3, true);
-var createOperationSpec$1 = {
+const xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$1 = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    responses: {
+        201: {
+            headersMapper: PageBlobCreateHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobCreateExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
-        contentLength,
-        tier0,
-        metadata,
-        encryptionScope,
-        blobContentLength,
-        blobSequenceNumber,
         version,
         requestId,
-        blobTagsString,
-        blobType0,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
         blobContentType,
+        blobContentMD5,
         blobContentEncoding,
         blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
         blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        blobType,
+        blobContentLength,
+        blobSequenceNumber
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const uploadPagesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobCreateHeaders
+            headersMapper: PageBlobUploadPagesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobCreateHeaders
+            headersMapper: PageBlobUploadPagesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var uploadPagesOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
         contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
         transactionalContentMD5,
         transactionalContentCrc64,
-        range0,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite0,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        contentType1,
+        accept2,
+        pageWrite,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
-        ifSequenceNumberEqualTo,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        ifSequenceNumberEqualTo
     ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
+    mediaType: "binary",
+    serializer
+};
+const clearPagesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobUploadPagesHeaders
+            headersMapper: PageBlobClearPagesHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobUploadPagesHeaders
+            headersMapper: PageBlobClearPagesExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var clearPagesOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
+        version,
+        requestId,
+        accept1,
         contentLength,
-        range0,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite1,
-        leaseId0,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
         ifSequenceNumberEqualTo,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        pageWrite1
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const uploadPagesFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: PageBlobClearPagesHeaders
+            headersMapper: PageBlobUploadPagesFromURLHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobClearPagesHeaders
+            headersMapper: PageBlobUploadPagesFromURLExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-var uploadPagesFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp16
-    ],
+    queryParameters: [timeoutInSeconds, comp19],
+    urlParameters: [url],
     headerParameters: [
-        sourceUrl,
-        sourceRange0,
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
         sourceContentMD5,
-        sourceContentCrc64,
-        contentLength,
-        range1,
-        encryptionScope,
-        version,
-        requestId,
-        pageWrite0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        leaseId0,
+        copySourceAuthorization,
+        pageWrite,
         ifSequenceNumberLessThanOrEqualTo,
         ifSequenceNumberLessThan,
         ifSequenceNumberEqualTo,
+        sourceUrl,
+        sourceRange,
+        sourceContentCrc64,
+        range1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const getPageRangesOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
+    responses: {
+        200: {
+            bodyMapper: PageList,
+            headersMapper: PageBlobGetPageRangesHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobGetPageRangesExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp20
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        ifMatch,
+        ifNoneMatch,
+        ifTags
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const getPageRangesDiffOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
+    responses: {
+        200: {
+            bodyMapper: PageList,
+            headersMapper: PageBlobGetPageRangesDiffHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobGetPageRangesDiffExceptionHeaders
+        }
+    },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp20,
+        prevsnapshot
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        range,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        prevSnapshotUrl
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const resizeOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: PageBlobResizeHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobResizeExceptionHeaders
+        }
+    },
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        blobContentLength
+    ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+const updateSequenceNumberOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        200: {
+            headersMapper: PageBlobUpdateSequenceNumberHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: PageBlobUpdateSequenceNumberExceptionHeaders
+        }
+    },
+    queryParameters: [comp, timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
-    ],
-    responses: {
-        201: {
-            headersMapper: PageBlobUploadPagesFromURLHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobUploadPagesFromURLHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var getPageRangesOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        comp17
-    ],
-    headerParameters: [
-        range0,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            bodyMapper: PageList,
-            headersMapper: PageBlobGetPageRangesHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobGetPageRangesHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var getPageRangesDiffOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        timeoutInSeconds,
-        prevsnapshot,
-        comp17
-    ],
-    headerParameters: [
-        prevSnapshotUrl,
-        range0,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            bodyMapper: PageList,
-            headersMapper: PageBlobGetPageRangesDiffHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobGetPageRangesDiffHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var resizeOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
-    headerParameters: [
-        encryptionScope,
-        blobContentLength,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        200: {
-            headersMapper: PageBlobResizeHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobResizeHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$3
-};
-var updateSequenceNumberOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp0
-    ],
-    headerParameters: [
-        sequenceNumberAction,
         blobSequenceNumber,
-        version,
-        requestId,
-        leaseId0,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        sequenceNumberAction
     ],
-    responses: {
-        200: {
-            headersMapper: PageBlobUpdateSequenceNumberHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: PageBlobUpdateSequenceNumberHeaders
-        }
-    },
     isXML: true,
-    serializer: serializer$3
+    serializer: xmlSerializer$3
 };
-var copyIncrementalOperationSpec = {
+const copyIncrementalOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp18
-    ],
-    headerParameters: [
-        copySource,
-        version,
-        requestId,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
     responses: {
         202: {
             headersMapper: PageBlobCopyIncrementalHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: PageBlobCopyIncrementalHeaders
+            headersMapper: PageBlobCopyIncrementalExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$3
-};
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is regenerated.
- */
-
-var Mappers$4 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    AppendBlobAppendBlockFromUrlHeaders: AppendBlobAppendBlockFromUrlHeaders,
-    AppendBlobAppendBlockHeaders: AppendBlobAppendBlockHeaders,
-    AppendBlobCreateHeaders: AppendBlobCreateHeaders,
-    AppendBlobSealHeaders: AppendBlobSealHeaders,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
-/** Class representing a AppendBlob. */
-var AppendBlob = /** @class */ (function () {
-    /**
-     * Create a AppendBlob.
-     * @param {StorageClientContext} client Reference to the service client.
-     */
-    function AppendBlob(client) {
-        this.client = client;
-    }
-    AppendBlob.prototype.create = function (contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            contentLength: contentLength,
-            options: options
-        }, createOperationSpec$2, callback);
-    };
-    AppendBlob.prototype.appendBlock = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, appendBlockOperationSpec, callback);
-    };
-    AppendBlob.prototype.appendBlockFromUrl = function (sourceUrl, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            sourceUrl: sourceUrl,
-            contentLength: contentLength,
-            options: options
-        }, appendBlockFromUrlOperationSpec, callback);
-    };
-    AppendBlob.prototype.seal = function (options, callback) {
-        return this.client.sendOperationRequest({
-            options: options
-        }, sealOperationSpec, callback);
-    };
-    return AppendBlob;
-}());
-// Operation Specifications
-var serializer$4 = new coreHttp.Serializer(Mappers$4, true);
-var createOperationSpec$2 = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    queryParameters: [timeoutInSeconds, comp21],
+    urlParameters: [url],
     headerParameters: [
-        contentLength,
-        metadata,
-        encryptionScope,
         version,
         requestId,
-        blobTagsString,
-        blobType1,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
-        blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    responses: {
-        201: {
-            headersMapper: AppendBlobCreateHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: AppendBlobCreateHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$4
-};
-var appendBlockOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp19
-    ],
-    headerParameters: [
-        contentLength,
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
-        leaseId0,
-        maxSize,
-        appendPosition,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: AppendBlobAppendBlockHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: AppendBlobAppendBlockHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$4
-};
-var appendBlockFromUrlOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp19
-    ],
-    headerParameters: [
-        sourceUrl,
-        sourceRange1,
-        sourceContentMD5,
-        sourceContentCrc64,
-        contentLength,
-        transactionalContentMD5,
-        encryptionScope,
-        version,
-        requestId,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
-        leaseId0,
-        maxSize,
-        appendPosition,
+        accept1,
         ifModifiedSince,
         ifUnmodifiedSince,
         ifMatch,
         ifNoneMatch,
         ifTags,
-        sourceIfModifiedSince,
-        sourceIfUnmodifiedSince,
-        sourceIfMatch,
-        sourceIfNoneMatch
+        copySource
     ],
+    isXML: true,
+    serializer: xmlSerializer$3
+};
+
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+/** Class representing a AppendBlob. */
+class AppendBlob {
+    /**
+     * Initialize a new instance of the class AppendBlob class.
+     * @param client Reference to the service client
+     */
+    constructor(client) {
+        this.client = client;
+    }
+    /**
+     * The Create Append Blob operation creates a new append blob.
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    create(contentLength, options) {
+        const operationArguments = {
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, createOperationSpec$2);
+    }
+    /**
+     * The Append Block operation commits a new block of data to the end of an existing append blob. The
+     * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to
+     * AppendBlob. Append Block is supported only on version 2015-02-21 version or later.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    appendBlock(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);
+    }
+    /**
+     * The Append Block operation commits a new block of data to the end of an existing append blob where
+     * the contents are read from a source url. The Append Block operation is permitted only if the blob
+     * was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version
+     * 2015-02-21 version or later.
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param contentLength The length of the request.
+     * @param options The options parameters.
+     */
+    appendBlockFromUrl(sourceUrl, contentLength, options) {
+        const operationArguments = {
+            sourceUrl,
+            contentLength,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);
+    }
+    /**
+     * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version
+     * 2019-12-12 version or later.
+     * @param options The options parameters.
+     */
+    seal(options) {
+        const operationArguments = {
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, sealOperationSpec);
+    }
+}
+// Operation Specifications
+const xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$2 = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: AppendBlobCreateHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: AppendBlobCreateExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        blobTagsString,
+        legalHold1,
+        blobType1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$4
+};
+const appendBlockOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: AppendBlobAppendBlockHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: AppendBlobAppendBlockExceptionHeaders
+        }
+    },
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds, comp22],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        contentLength,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        encryptionScope,
+        transactionalContentMD5,
+        transactionalContentCrc64,
+        contentType1,
+        accept2,
+        maxSize,
+        appendPosition
+    ],
+    mediaType: "binary",
+    serializer: serializer$1
+};
+const appendBlockFromUrlOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: AppendBlobAppendBlockFromUrlHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: AppendBlobAppendBlockFromUrlHeaders
+            headersMapper: AppendBlobAppendBlockFromUrlExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$4
-};
-var sealOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds,
-        comp20
-    ],
+    queryParameters: [timeoutInSeconds, comp22],
+    urlParameters: [url],
     headerParameters: [
         version,
         requestId,
-        leaseId0,
+        accept1,
+        contentLength,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
         ifMatch,
         ifNoneMatch,
-        appendPosition
+        ifTags,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
+        sourceContentMD5,
+        copySourceAuthorization,
+        transactionalContentMD5,
+        sourceUrl,
+        sourceContentCrc64,
+        maxSize,
+        appendPosition,
+        sourceRange1
     ],
+    isXML: true,
+    serializer: xmlSerializer$4
+};
+const sealOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         200: {
             headersMapper: AppendBlobSealHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: AppendBlobSealHeaders
+            headersMapper: AppendBlobSealExceptionHeaders
         }
     },
+    queryParameters: [timeoutInSeconds, comp23],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        ifMatch,
+        ifNoneMatch,
+        appendPosition
+    ],
     isXML: true,
-    serializer: serializer$4
+    serializer: xmlSerializer$4
 };
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-
-var Mappers$5 = /*#__PURE__*/Object.freeze({
-    __proto__: null,
-    Block: Block,
-    BlockBlobCommitBlockListHeaders: BlockBlobCommitBlockListHeaders,
-    BlockBlobGetBlockListHeaders: BlockBlobGetBlockListHeaders,
-    BlockBlobStageBlockFromURLHeaders: BlockBlobStageBlockFromURLHeaders,
-    BlockBlobStageBlockHeaders: BlockBlobStageBlockHeaders,
-    BlockBlobUploadHeaders: BlockBlobUploadHeaders,
-    BlockList: BlockList,
-    BlockLookupList: BlockLookupList,
-    StorageError: StorageError
-});
-
-/*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- *
- * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
- */
 /** Class representing a BlockBlob. */
-var BlockBlob = /** @class */ (function () {
+class BlockBlob {
     /**
-     * Create a BlockBlob.
-     * @param {StorageClientContext} client Reference to the service client.
+     * Initialize a new instance of the class BlockBlob class.
+     * @param client Reference to the service client
      */
-    function BlockBlob(client) {
+    constructor(client) {
         this.client = client;
     }
-    BlockBlob.prototype.upload = function (body, contentLength, options, callback) {
-        return this.client.sendOperationRequest({
-            body: body,
-            contentLength: contentLength,
-            options: options
-        }, uploadOperationSpec, callback);
-    };
-    BlockBlob.prototype.stageBlock = function (blockId, contentLength, body, options, callback) {
-        return this.client.sendOperationRequest({
-            blockId: blockId,
-            contentLength: contentLength,
-            body: body,
-            options: options
-        }, stageBlockOperationSpec, callback);
-    };
-    BlockBlob.prototype.stageBlockFromURL = function (blockId, contentLength, sourceUrl, options, callback) {
-        return this.client.sendOperationRequest({
-            blockId: blockId,
-            contentLength: contentLength,
-            sourceUrl: sourceUrl,
-            options: options
-        }, stageBlockFromURLOperationSpec, callback);
-    };
-    BlockBlob.prototype.commitBlockList = function (blocks, options, callback) {
-        return this.client.sendOperationRequest({
-            blocks: blocks,
-            options: options
-        }, commitBlockListOperationSpec, callback);
-    };
-    BlockBlob.prototype.getBlockList = function (listType, options, callback) {
-        return this.client.sendOperationRequest({
-            listType: listType,
-            options: options
-        }, getBlockListOperationSpec, callback);
-    };
-    return BlockBlob;
-}());
+    /**
+     * The Upload Block Blob operation updates the content of an existing block blob. Updating an existing
+     * block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put
+     * Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a
+     * partial update of the content of a block blob, use the Put Block List operation.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    upload(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);
+    }
+    /**
+     * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read
+     * from a given URL.  This API is supported beginning with the 2020-04-08 version. Partial updates are
+     * not supported with Put Blob from URL; the content of an existing blob is overwritten with the
+     * content of the new blob.  To perform partial updates to a block blob’s contents using a source URL,
+     * use the Put Block from URL API in conjunction with Put Block List.
+     * @param contentLength The length of the request.
+     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
+     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would
+     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared
+     *                   access signature.
+     * @param options The options parameters.
+     */
+    putBlobFromUrl(contentLength, copySource, options) {
+        const operationArguments = {
+            contentLength,
+            copySource,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);
+    }
+    /**
+     * The Stage Block operation creates a new block to be committed as part of a blob
+     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
+     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
+     *                for the blockid parameter must be the same size for each block.
+     * @param contentLength The length of the request.
+     * @param body Initial data
+     * @param options The options parameters.
+     */
+    stageBlock(blockId, contentLength, body, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            body,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);
+    }
+    /**
+     * The Stage Block operation creates a new block to be committed as part of a blob where the contents
+     * are read from a URL.
+     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
+     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified
+     *                for the blockid parameter must be the same size for each block.
+     * @param contentLength The length of the request.
+     * @param sourceUrl Specify a URL to the copy source.
+     * @param options The options parameters.
+     */
+    stageBlockFromURL(blockId, contentLength, sourceUrl, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            sourceUrl,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);
+    }
+    /**
+     * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the
+     * blob. In order to be written as part of a blob, a block must have been successfully written to the
+     * server in a prior Put Block operation. You can call Put Block List to update a blob by uploading
+     * only those blocks that have changed, then committing the new and existing blocks together. You can
+     * do this by specifying whether to commit a block from the committed block list or from the
+     * uncommitted block list, or to commit the most recently uploaded version of the block, whichever list
+     * it may belong to.
+     * @param blocks Blob Blocks.
+     * @param options The options parameters.
+     */
+    commitBlockList(blocks, options) {
+        const operationArguments = {
+            blocks,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);
+    }
+    /**
+     * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
+     * blob
+     * @param listType Specifies whether to return the list of committed blocks, the list of uncommitted
+     *                 blocks, or both lists together.
+     * @param options The options parameters.
+     */
+    getBlockList(listType, options) {
+        const operationArguments = {
+            listType,
+            options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
+        };
+        return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);
+    }
+}
 // Operation Specifications
-var serializer$5 = new coreHttp.Serializer(Mappers$5, true);
-var uploadOperationSpec = {
+const xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const uploadOperationSpec = {
+    path: "/{containerName}/{blob}",
     httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        timeoutInSeconds
-    ],
+    responses: {
+        201: {
+            headersMapper: BlockBlobUploadHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobUploadExceptionHeaders
+        }
+    },
+    requestBody: body1,
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
     headerParameters: [
-        transactionalContentMD5,
+        version,
+        requestId,
         contentLength,
         metadata,
-        encryptionScope,
-        tier0,
-        version,
-        requestId,
-        blobTagsString,
-        blobType2,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobCacheControl,
-        blobContentDisposition,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm,
+        leaseId,
         ifModifiedSince,
         ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: BlockBlobUploadHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlockBlobUploadHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$5
-};
-var stageBlockOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        blockId,
-        timeoutInSeconds,
-        comp21
-    ],
-    headerParameters: [
-        contentLength,
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
-        leaseId0,
-        encryptionKey,
-        encryptionKeySha256,
-        encryptionAlgorithm
-    ],
-    requestBody: {
-        parameterPath: "body",
-        mapper: {
-            required: true,
-            serializedName: "body",
-            type: {
-                name: "Stream"
-            }
-        }
-    },
-    contentType: "application/octet-stream",
-    responses: {
-        201: {
-            headersMapper: BlockBlobStageBlockHeaders
-        },
-        default: {
-            bodyMapper: StorageError,
-            headersMapper: BlockBlobStageBlockHeaders
-        }
-    },
-    isXML: true,
-    serializer: serializer$5
-};
-var stageBlockFromURLOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        blockId,
-        timeoutInSeconds,
-        comp21
-    ],
-    headerParameters: [
-        contentLength,
-        sourceUrl,
-        sourceRange1,
-        sourceContentMD5,
-        sourceContentCrc64,
-        encryptionScope,
-        version,
-        requestId,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        leaseId0,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        transactionalContentMD5,
+        contentType1,
+        accept2,
+        blobType2
+    ],
+    mediaType: "binary",
+    serializer: serializer$2
+};
+const putBlobFromUrlOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: BlockBlobPutBlobFromUrlHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobPutBlobFromUrlExceptionHeaders
+        }
+    },
+    queryParameters: [timeoutInSeconds],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        encryptionScope,
+        tier,
         sourceIfModifiedSince,
         sourceIfUnmodifiedSince,
         sourceIfMatch,
-        sourceIfNoneMatch
+        sourceIfNoneMatch,
+        sourceIfTags,
+        copySource,
+        blobTagsString,
+        sourceContentMD5,
+        copySourceAuthorization,
+        transactionalContentMD5,
+        blobType2,
+        copySourceBlobProperties
     ],
+    isXML: true,
+    serializer: xmlSerializer$5
+};
+const stageBlockOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
-            headersMapper: BlockBlobStageBlockFromURLHeaders
+            headersMapper: BlockBlobStageBlockHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobStageBlockFromURLHeaders
+            headersMapper: BlockBlobStageBlockExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$5
-};
-var commitBlockListOperationSpec = {
-    httpMethod: "PUT",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
+    requestBody: body1,
     queryParameters: [
         timeoutInSeconds,
-        comp22
+        comp24,
+        blockId
     ],
+    urlParameters: [url],
     headerParameters: [
-        transactionalContentMD5,
-        transactionalContentCrc64,
-        metadata,
-        encryptionScope,
-        tier0,
         version,
         requestId,
-        blobTagsString,
-        blobCacheControl,
-        blobContentType,
-        blobContentEncoding,
-        blobContentLanguage,
-        blobContentMD5,
-        blobContentDisposition,
-        leaseId0,
+        contentLength,
+        leaseId,
         encryptionKey,
         encryptionKeySha256,
         encryptionAlgorithm,
-        ifModifiedSince,
-        ifUnmodifiedSince,
-        ifMatch,
-        ifNoneMatch,
-        ifTags
+        encryptionScope,
+        transactionalContentMD5,
+        transactionalContentCrc64,
+        contentType1,
+        accept2
     ],
-    requestBody: {
-        parameterPath: "blocks",
-        mapper: tslib.__assign(tslib.__assign({}, BlockLookupList), { required: true })
+    mediaType: "binary",
+    serializer: serializer$2
+};
+const stageBlockFromURLOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
+    responses: {
+        201: {
+            headersMapper: BlockBlobStageBlockFromURLHeaders
+        },
+        default: {
+            bodyMapper: StorageError,
+            headersMapper: BlockBlobStageBlockFromURLExceptionHeaders
+        }
     },
-    contentType: "application/xml; charset=utf-8",
+    queryParameters: [
+        timeoutInSeconds,
+        comp24,
+        blockId
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        contentLength,
+        leaseId,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        encryptionScope,
+        sourceIfModifiedSince,
+        sourceIfUnmodifiedSince,
+        sourceIfMatch,
+        sourceIfNoneMatch,
+        sourceContentMD5,
+        copySourceAuthorization,
+        sourceUrl,
+        sourceContentCrc64,
+        sourceRange1
+    ],
+    isXML: true,
+    serializer: xmlSerializer$5
+};
+const commitBlockListOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "PUT",
     responses: {
         201: {
             headersMapper: BlockBlobCommitBlockListHeaders
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobCommitBlockListHeaders
+            headersMapper: BlockBlobCommitBlockListExceptionHeaders
         }
     },
-    isXML: true,
-    serializer: serializer$5
-};
-var getBlockListOperationSpec = {
-    httpMethod: "GET",
-    path: "{containerName}/{blob}",
-    urlParameters: [
-        url
-    ],
-    queryParameters: [
-        snapshot,
-        listType,
-        timeoutInSeconds,
-        comp22
-    ],
+    requestBody: blocks,
+    queryParameters: [timeoutInSeconds, comp25],
+    urlParameters: [url],
     headerParameters: [
+        contentType,
+        accept,
         version,
         requestId,
-        leaseId0,
-        ifTags
+        metadata,
+        leaseId,
+        ifModifiedSince,
+        ifUnmodifiedSince,
+        encryptionKey,
+        encryptionKeySha256,
+        encryptionAlgorithm,
+        ifMatch,
+        ifNoneMatch,
+        ifTags,
+        blobCacheControl,
+        blobContentType,
+        blobContentMD5,
+        blobContentEncoding,
+        blobContentLanguage,
+        blobContentDisposition,
+        immutabilityPolicyExpiry,
+        immutabilityPolicyMode,
+        encryptionScope,
+        tier,
+        blobTagsString,
+        legalHold1,
+        transactionalContentMD5,
+        transactionalContentCrc64
     ],
+    isXML: true,
+    contentType: "application/xml; charset=utf-8",
+    mediaType: "xml",
+    serializer: xmlSerializer$5
+};
+const getBlockListOperationSpec = {
+    path: "/{containerName}/{blob}",
+    httpMethod: "GET",
     responses: {
         200: {
             bodyMapper: BlockList,
@@ -20754,34 +22784,48 @@ var getBlockListOperationSpec = {
         },
         default: {
             bodyMapper: StorageError,
-            headersMapper: BlockBlobGetBlockListHeaders
+            headersMapper: BlockBlobGetBlockListExceptionHeaders
         }
     },
+    queryParameters: [
+        timeoutInSeconds,
+        snapshot,
+        comp25,
+        listType
+    ],
+    urlParameters: [url],
+    headerParameters: [
+        version,
+        requestId,
+        accept1,
+        leaseId,
+        ifTags
+    ],
     isXML: true,
-    serializer: serializer$5
+    serializer: xmlSerializer$5
 };
 
 // Copyright (c) Microsoft Corporation.
 /**
- * The @azure/logger configuration for this package.
+ * The `@azure/logger` configuration for this package.
  */
-var logger = logger$1.createClientLogger("storage-blob");
+const logger = logger$1.createClientLogger("storage-blob");
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-var SDK_VERSION = "12.2.1";
-var SERVICE_VERSION = "2019-12-12";
-var BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
-var BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
-var BLOCK_BLOB_MAX_BLOCKS = 50000;
-var DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
-var DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
-var DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const SDK_VERSION = "12.8.0";
+const SERVICE_VERSION = "2020-10-02";
+const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
+const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
+const BLOCK_BLOB_MAX_BLOCKS = 50000;
+const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
+const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
+const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
 /**
  * The OAuth scope to use with Azure Storage.
  */
-var StorageOAuthScopes = "https://storage.azure.com/.default";
-var URLConstants = {
+const StorageOAuthScopes = "https://storage.azure.com/.default";
+const URLConstants = {
     Parameters: {
         FORCE_BROWSER_NO_CACHE: "_",
         SIGNATURE: "sig",
@@ -20790,14 +22834,14 @@ var URLConstants = {
         TIMEOUT: "timeout"
     }
 };
-var HTTPURLConnection = {
+const HTTPURLConnection = {
     HTTP_ACCEPTED: 202,
     HTTP_CONFLICT: 409,
     HTTP_NOT_FOUND: 404,
     HTTP_PRECON_FAILED: 412,
     HTTP_RANGE_NOT_SATISFIABLE: 416
 };
-var HeaderConstants = {
+const HeaderConstants = {
     AUTHORIZATION: "Authorization",
     AUTHORIZATION_SCHEME: "Bearer",
     CONTENT_ENCODING: "Content-Encoding",
@@ -20822,16 +22866,16 @@ var HeaderConstants = {
     X_MS_ERROR_CODE: "x-ms-error-code",
     X_MS_VERSION: "x-ms-version"
 };
-var ETagNone = "";
-var ETagAny = "*";
-var SIZE_1_MB = 1 * 1024 * 1024;
-var BATCH_MAX_REQUEST = 256;
-var BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
-var HTTP_LINE_ENDING = "\r\n";
-var HTTP_VERSION_1_1 = "HTTP/1.1";
-var EncryptionAlgorithmAES25 = "AES256";
-var DevelopmentConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;";
-var StorageBlobLoggingAllowedHeaderNames = [
+const ETagNone = "";
+const ETagAny = "*";
+const SIZE_1_MB = 1 * 1024 * 1024;
+const BATCH_MAX_REQUEST = 256;
+const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
+const HTTP_LINE_ENDING = "\r\n";
+const HTTP_VERSION_1_1 = "HTTP/1.1";
+const EncryptionAlgorithmAES25 = "AES256";
+const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;
+const StorageBlobLoggingAllowedHeaderNames = [
     "Access-Control-Allow-Origin",
     "Cache-Control",
     "Content-Length",
@@ -20927,7 +22971,7 @@ var StorageBlobLoggingAllowedHeaderNames = [
     "x-ms-if-tags",
     "x-ms-source-if-tags"
 ];
-var StorageBlobLoggingAllowedQueryParameters = [
+const StorageBlobLoggingAllowedQueryParameters = [
     "comp",
     "maxresults",
     "rscc",
@@ -20963,7 +23007,7 @@ var StorageBlobLoggingAllowedQueryParameters = [
     "snapshot"
 ];
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * Reserved URL characters must be properly escaped for Storage services like Blob or File.
  *
@@ -21014,13 +23058,11 @@ var StorageBlobLoggingAllowedQueryParameters = [
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata
  *
- * @export
- * @param {string} url
- * @returns {string}
+ * @param url -
  */
 function escapeURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
     path = path || "/";
     path = escape(path);
     urlParsed.setPath(path);
@@ -21029,12 +23071,11 @@ function escapeURLPath(url) {
 function getProxyUriFromDevConnString(connectionString) {
     // Development Connection String
     // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.search("DevelopmentStorageProxyUri=") !== -1) {
         // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri
-        var matchCredentials = connectionString.split(";");
-        for (var _i = 0, matchCredentials_1 = matchCredentials; _i < matchCredentials_1.length; _i++) {
-            var element = matchCredentials_1[_i];
+        const matchCredentials = connectionString.split(";");
+        for (const element of matchCredentials) {
             if (element.trim().startsWith("DevelopmentStorageProxyUri=")) {
                 proxyUri = element.trim().match("DevelopmentStorageProxyUri=(.*)")[1];
             }
@@ -21043,9 +23084,8 @@ function getProxyUriFromDevConnString(connectionString) {
     return proxyUri;
 }
 function getValueInConnString(connectionString, argument) {
-    var elements = connectionString.split(";");
-    for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
-        var element = elements_1[_i];
+    const elements = connectionString.split(";");
+    for (const element of elements) {
         if (element.trim().startsWith(argument)) {
             return element.trim().match(argument + "=(.*)")[1];
         }
@@ -21055,29 +23095,28 @@ function getValueInConnString(connectionString, argument) {
 /**
  * Extracts the parts of an Azure Storage account connection string.
  *
- * @export
- * @param {string} connectionString Connection string.
- * @returns {ConnectionString}  String key value pairs of the storage account's url and credentials.
+ * @param connectionString - Connection string.
+ * @returns String key value pairs of the storage account's url and credentials.
  */
 function extractConnectionStringParts(connectionString) {
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.startsWith("UseDevelopmentStorage=true")) {
         // Development connection string
         proxyUri = getProxyUriFromDevConnString(connectionString);
         connectionString = DevelopmentConnectionString;
     }
     // Matching BlobEndpoint in the Account connection string
-    var blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
+    let blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
     // Slicing off '/' at the end if exists
     // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)
     blobEndpoint = blobEndpoint.endsWith("/") ? blobEndpoint.slice(0, -1) : blobEndpoint;
     if (connectionString.search("DefaultEndpointsProtocol=") !== -1 &&
         connectionString.search("AccountKey=") !== -1) {
         // Account connection string
-        var defaultEndpointsProtocol = "";
-        var accountName = "";
-        var accountKey = Buffer.from("accountKey", "base64");
-        var endpointSuffix = "";
+        let defaultEndpointsProtocol = "";
+        let accountName = "";
+        let accountKey = Buffer.from("accountKey", "base64");
+        let endpointSuffix = "";
         // Get account name and key
         accountName = getValueInConnString(connectionString, "AccountName");
         accountKey = Buffer.from(getValueInConnString(connectionString, "AccountKey"), "base64");
@@ -21085,7 +23124,7 @@ function extractConnectionStringParts(connectionString) {
             // BlobEndpoint is not present in the Account connection string
             // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`
             defaultEndpointsProtocol = getValueInConnString(connectionString, "DefaultEndpointsProtocol");
-            var protocol = defaultEndpointsProtocol.toLowerCase();
+            const protocol = defaultEndpointsProtocol.toLowerCase();
             if (protocol !== "https" && protocol !== "http") {
                 throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'");
             }
@@ -21093,7 +23132,7 @@ function extractConnectionStringParts(connectionString) {
             if (!endpointSuffix) {
                 throw new Error("Invalid EndpointSuffix in the provided Connection String");
             }
-            blobEndpoint = defaultEndpointsProtocol + "://" + accountName + ".blob." + endpointSuffix;
+            blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
         }
         if (!accountName) {
             throw new Error("Invalid AccountName in the provided Connection String");
@@ -21104,29 +23143,28 @@ function extractConnectionStringParts(connectionString) {
         return {
             kind: "AccountConnString",
             url: blobEndpoint,
-            accountName: accountName,
-            accountKey: accountKey,
-            proxyUri: proxyUri
+            accountName,
+            accountKey,
+            proxyUri
         };
     }
     else {
         // SAS connection string
-        var accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
-        var accountName = getAccountNameFromUrl(blobEndpoint);
+        const accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
+        const accountName = getAccountNameFromUrl(blobEndpoint);
         if (!blobEndpoint) {
             throw new Error("Invalid BlobEndpoint in the provided SAS Connection String");
         }
         else if (!accountSas) {
             throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String");
         }
-        return { kind: "SASConnString", url: blobEndpoint, accountName: accountName, accountSas: accountSas };
+        return { kind: "SASConnString", url: blobEndpoint, accountName, accountSas };
     }
 }
 /**
  * Internal escape method implemented Strategy Two mentioned in escapeURL() description.
  *
- * @param {string} text
- * @returns {string}
+ * @param text -
  */
 function escape(text) {
     return encodeURIComponent(text)
@@ -21139,15 +23177,14 @@ function escape(text) {
  * Append a string to URL path. Will remove duplicated "/" in front of the string
  * when URL path ends with a "/".
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} name String to be appended to URL
- * @returns {string} An updated URL string
+ * @param url - Source URL string
+ * @param name - String to be appended to URL
+ * @returns An updated URL string
  */
 function appendToURLPath(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
-    path = path ? (path.endsWith("/") ? "" + path + name : path + "/" + name) : name;
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
+    path = path ? (path.endsWith("/") ? `${path}${name}` : `${path}/${name}`) : name;
     urlParsed.setPath(path);
     return urlParsed.toString();
 }
@@ -21155,115 +23192,131 @@ function appendToURLPath(url, name) {
  * Set URL parameter name and value. If name exists in URL parameters, old value
  * will be replaced by name key. If not provide value, the parameter will be deleted.
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} name Parameter name
- * @param {string} [value] Parameter value
- * @returns {string} An updated URL string
+ * @param url - Source URL string
+ * @param name - Parameter name
+ * @param value - Parameter value
+ * @returns An updated URL string
  */
 function setURLParameter(url, name, value) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setQueryParameter(name, value);
     return urlParsed.toString();
 }
+/**
+ * Get URL parameter by name.
+ *
+ * @param url -
+ * @param name -
+ */
+function getURLParameter(url, name) {
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    return urlParsed.getQueryParameterValue(name);
+}
 /**
  * Set URL host.
  *
- * @export
- * @param {string} url Source URL string
- * @param {string} host New host string
+ * @param url - Source URL string
+ * @param host - New host string
  * @returns An updated URL string
  */
 function setURLHost(url, host) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setHost(host);
     return urlParsed.toString();
 }
 /**
  * Get URL path from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getPath();
 }
 /**
  * Get URL scheme from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLScheme(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getScheme();
 }
 /**
  * Get URL path and query from an URL string.
  *
- * @export
- * @param {string} url Source URL string
- * @returns {(string | undefined)}
+ * @param url - Source URL string
  */
 function getURLPathAndQuery(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var pathString = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    const pathString = urlParsed.getPath();
     if (!pathString) {
         throw new RangeError("Invalid url without valid path.");
     }
-    var queryString = urlParsed.getQuery() || "";
+    let queryString = urlParsed.getQuery() || "";
     queryString = queryString.trim();
-    if (queryString != "") {
-        queryString = queryString.startsWith("?") ? queryString : "?" + queryString; // Ensure query string start with '?'
+    if (queryString !== "") {
+        queryString = queryString.startsWith("?") ? queryString : `?${queryString}`; // Ensure query string start with '?'
     }
-    return "" + pathString + queryString;
+    return `${pathString}${queryString}`;
 }
 /**
  * Get URL query key value pairs from an URL string.
  *
- * @export
- * @param {string} url
- * @returns {{[key: string]: string}}
+ * @param url -
  */
 function getURLQueries(url) {
-    var queryString = coreHttp.URLBuilder.parse(url).getQuery();
+    let queryString = coreHttp.URLBuilder.parse(url).getQuery();
     if (!queryString) {
         return {};
     }
     queryString = queryString.trim();
     queryString = queryString.startsWith("?") ? queryString.substr(1) : queryString;
-    var querySubStrings = queryString.split("&");
-    querySubStrings = querySubStrings.filter(function (value) {
-        var indexOfEqual = value.indexOf("=");
-        var lastIndexOfEqual = value.lastIndexOf("=");
+    let querySubStrings = queryString.split("&");
+    querySubStrings = querySubStrings.filter((value) => {
+        const indexOfEqual = value.indexOf("=");
+        const lastIndexOfEqual = value.lastIndexOf("=");
         return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);
     });
-    var queries = {};
-    for (var _i = 0, querySubStrings_1 = querySubStrings; _i < querySubStrings_1.length; _i++) {
-        var querySubString = querySubStrings_1[_i];
-        var splitResults = querySubString.split("=");
-        var key = splitResults[0];
-        var value = splitResults[1];
+    const queries = {};
+    for (const querySubString of querySubStrings) {
+        const splitResults = querySubString.split("=");
+        const key = splitResults[0];
+        const value = splitResults[1];
         queries[key] = value;
     }
     return queries;
 }
+/**
+ * Append a string to URL query.
+ *
+ * @param url - Source URL string.
+ * @param queryParts - String to be appended to the URL query.
+ * @returns An updated URL string.
+ */
+function appendToURLQuery(url, queryParts) {
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let query = urlParsed.getQuery();
+    if (query) {
+        query += "&" + queryParts;
+    }
+    else {
+        query = queryParts;
+    }
+    urlParsed.setQuery(query);
+    return urlParsed.toString();
+}
 /**
  * Rounds a date off to seconds.
  *
- * @export
- * @param {Date} date
- * @param {boolean} [withMilliseconds=true] If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;
+ * @param date -
+ * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;
  *                                          If false, YYYY-MM-DDThh:mm:ssZ will be returned.
- * @returns {string} Date string in ISO8061 format, with or without 7 milliseconds component
+ * @returns Date string in ISO8061 format, with or without 7 milliseconds component
  */
-function truncatedISO8061Date(date, withMilliseconds) {
-    if (withMilliseconds === void 0) { withMilliseconds = true; }
+function truncatedISO8061Date(date, withMilliseconds = true) {
     // Date.toISOString() will return like "2018-10-29T06:34:36.139Z"
-    var dateString = date.toISOString();
+    const dateString = date.toISOString();
     return withMilliseconds
         ? dateString.substring(0, dateString.length - 1) + "0000" + "Z"
         : dateString.substring(0, dateString.length - 5) + "Z";
@@ -21271,9 +23324,7 @@ function truncatedISO8061Date(date, withMilliseconds) {
 /**
  * Base64 encode.
  *
- * @export
- * @param {string} content
- * @returns {string}
+ * @param content -
  */
 function base64encode(content) {
     return !coreHttp.isNode ? btoa(content) : Buffer.from(content).toString("base64");
@@ -21281,69 +23332,59 @@ function base64encode(content) {
 /**
  * Generate a 64 bytes base64 block ID string.
  *
- * @export
- * @param {number} blockIndex
- * @returns {string}
+ * @param blockIndex -
  */
 function generateBlockID(blockIDPrefix, blockIndex) {
     // To generate a 64 bytes base64 string, source string should be 48
-    var maxSourceStringLength = 48;
+    const maxSourceStringLength = 48;
     // A blob can have a maximum of 100,000 uncommitted blocks at any given time
-    var maxBlockIndexLength = 6;
-    var maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
+    const maxBlockIndexLength = 6;
+    const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
     if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {
         blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);
     }
-    var res = blockIDPrefix +
+    const res = blockIDPrefix +
         padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, "0");
     return base64encode(res);
 }
 /**
  * Delay specified time interval.
  *
- * @export
- * @param {number} timeInMs
- * @param {AbortSignalLike} [aborter]
- * @param {Error} [abortError]
+ * @param timeInMs -
+ * @param aborter -
+ * @param abortError -
  */
-function delay(timeInMs, aborter, abortError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var timeout;
-                    var abortHandler = function () {
-                        if (timeout !== undefined) {
-                            clearTimeout(timeout);
-                        }
-                        reject(abortError);
-                    };
-                    var resolveHandler = function () {
-                        if (aborter !== undefined) {
-                            aborter.removeEventListener("abort", abortHandler);
-                        }
-                        resolve();
-                    };
-                    timeout = setTimeout(resolveHandler, timeInMs);
-                    if (aborter !== undefined) {
-                        aborter.addEventListener("abort", abortHandler);
-                    }
-                })];
-        });
+async function delay(timeInMs, aborter, abortError) {
+    return new Promise((resolve, reject) => {
+        /* eslint-disable-next-line prefer-const */
+        let timeout;
+        const abortHandler = () => {
+            if (timeout !== undefined) {
+                clearTimeout(timeout);
+            }
+            reject(abortError);
+        };
+        const resolveHandler = () => {
+            if (aborter !== undefined) {
+                aborter.removeEventListener("abort", abortHandler);
+            }
+            resolve();
+        };
+        timeout = setTimeout(resolveHandler, timeInMs);
+        if (aborter !== undefined) {
+            aborter.addEventListener("abort", abortHandler);
+        }
     });
 }
 /**
  * String.prototype.padStart()
  *
- * @export
- * @param {string} currentString
- * @param {number} targetLength
- * @param {string} [padString=" "]
- * @returns {string}
+ * @param currentString -
+ * @param targetLength -
+ * @param padString -
  */
-function padStart(currentString, targetLength, padString) {
-    if (padString === void 0) { padString = " "; }
-    // TS doesn't know this code needs to run downlevel sometimes.
-    // @ts-expect-error
+function padStart(currentString, targetLength, padString = " ") {
+    // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes
     if (String.prototype.padStart) {
         return currentString.padStart(targetLength, padString);
     }
@@ -21362,22 +23403,20 @@ function padStart(currentString, targetLength, padString) {
 /**
  * If two strings are equal when compared case insensitive.
  *
- * @export
- * @param {string} str1
- * @param {string} str2
- * @returns {boolean}
+ * @param str1 -
+ * @param str2 -
  */
 function iEqual(str1, str2) {
     return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();
 }
 /**
  * Extracts account name from the url
- * @param {string} url url to extract the account name from
- * @returns {string} with the account name
+ * @param url - url to extract the account name from
+ * @returns with the account name
  */
 function getAccountNameFromUrl(url) {
-    var parsedUrl = coreHttp.URLBuilder.parse(url);
-    var accountName;
+    const parsedUrl = coreHttp.URLBuilder.parse(url);
+    let accountName;
     try {
         if (parsedUrl.getHost().split(".")[1] === "blob") {
             // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
@@ -21400,10 +23439,10 @@ function getAccountNameFromUrl(url) {
     }
 }
 function isIpEndpointStyle(parsedUrl) {
-    if (parsedUrl.getHost() == undefined) {
+    if (parsedUrl.getHost() === undefined) {
         return false;
     }
-    var host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
+    const host = parsedUrl.getHost() + (parsedUrl.getPort() === undefined ? "" : ":" + parsedUrl.getPort());
     // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.
     // Case 2: localhost(:port), use broad regex to match port part.
     // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.
@@ -21413,19 +23452,17 @@ function isIpEndpointStyle(parsedUrl) {
 /**
  * Convert Tags to encoded string.
  *
- * @export
- * @param {Tags} tags
- * @returns {string | undefined}
+ * @param tags -
  */
 function toBlobTagsString(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var tagPairs = [];
-    for (var key in tags) {
-        if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
-            tagPairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
+    const tagPairs = [];
+    for (const key in tags) {
+        if (Object.prototype.hasOwnProperty.call(tags, key)) {
+            const value = tags[key];
+            tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
         }
     }
     return tagPairs.join("&");
@@ -21433,23 +23470,21 @@ function toBlobTagsString(tags) {
 /**
  * Convert Tags type to BlobTags.
  *
- * @export
- * @param {Tags} [tags]
- * @returns {(BlobTags | undefined)}
+ * @param tags -
  */
 function toBlobTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {
+    const res = {
         blobTagSet: []
     };
-    for (var key in tags) {
-        if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
+    for (const key in tags) {
+        if (Object.prototype.hasOwnProperty.call(tags, key)) {
+            const value = tags[key];
             res.blobTagSet.push({
-                key: key,
-                value: value
+                key,
+                value
             });
         }
     }
@@ -21458,17 +23493,14 @@ function toBlobTags(tags) {
 /**
  * Covert BlobTags to Tags type.
  *
- * @export
- * @param {BlobTags} [tags]
- * @returns {(Tags | undefined)}
+ * @param tags -
  */
 function toTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {};
-    for (var _i = 0, _a = tags.blobTagSet; _i < _a.length; _i++) {
-        var blobTag = _a[_i];
+    const res = {};
+    for (const blobTag of tags.blobTagSet) {
         res[blobTag.key] = blobTag.value;
     }
     return res;
@@ -21476,9 +23508,7 @@ function toTags(tags) {
 /**
  * Convert BlobQueryTextConfiguration to QuerySerialization type.
  *
- * @export
- * @param {(BlobQueryJsonTextConfiguration | BlobQueryCsvTextConfiguration)} [textConfiguration]
- * @returns {(QuerySerialization | undefined)}
+ * @param textConfiguration -
  */
 function toQuerySerialization(textConfiguration) {
     if (textConfiguration === undefined) {
@@ -21507,6 +23537,21 @@ function toQuerySerialization(textConfiguration) {
                     }
                 }
             };
+        case "arrow":
+            return {
+                format: {
+                    type: "arrow",
+                    arrowConfiguration: {
+                        schema: textConfiguration.schema
+                    }
+                }
+            };
+        case "parquet":
+            return {
+                format: {
+                    type: "parquet"
+                }
+            };
         default:
             throw Error("Invalid BlobQueryTextConfiguration.");
     }
@@ -21520,18 +23565,18 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
         // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.
         return undefined;
     }
-    var orProperties = [];
-    var _loop_1 = function (key) {
-        var ids = key.split("_");
-        var policyPrefix = "or-";
+    const orProperties = [];
+    for (const key in objectReplicationRecord) {
+        const ids = key.split("_");
+        const policyPrefix = "or-";
         if (ids[0].startsWith(policyPrefix)) {
             ids[0] = ids[0].substring(policyPrefix.length);
         }
-        var rule = {
+        const rule = {
             ruleId: ids[1],
             replicationStatus: objectReplicationRecord[key]
         };
-        var policyIndex = orProperties.findIndex(function (policy) { return policy.policyId === ids[0]; });
+        const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);
         if (policyIndex > -1) {
             orProperties[policyIndex].rules.push(rule);
         }
@@ -21541,14 +23586,24 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
                 rules: [rule]
             });
         }
-    };
-    for (var key in objectReplicationRecord) {
-        _loop_1(key);
     }
     return orProperties;
 }
+/**
+ * Attach a TokenCredential to an object.
+ *
+ * @param thing -
+ * @param credential -
+ */
+function attachCredential(thing, credential) {
+    thing.credential = credential;
+    return thing;
+}
+function httpAuthorizationToString(httpAuthorization) {
+    return httpAuthorization ? httpAuthorization.scheme + " " + httpAuthorization.value : undefined;
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:
  *
@@ -21559,66 +23614,47 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
  * 2. Remove cookie header for security
  *
  * 3. Remove content-length header to avoid browsers warning
- *
- * @class StorageBrowserPolicy
- * @extends {BaseRequestPolicy}
  */
-var StorageBrowserPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageBrowserPolicy, _super);
+class StorageBrowserPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of StorageBrowserPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @memberof StorageBrowserPolicy
+     * @param nextPolicy -
+     * @param options -
      */
-    function StorageBrowserPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageBrowserPolicy
+     * @param request -
      */
-    StorageBrowserPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                }
-            });
-        });
-    };
-    return StorageBrowserPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            return this._nextPolicy.sendRequest(request);
+        }
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
- *
- * @export
- * @class StorageBrowserPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var StorageBrowserPolicyFactory = /** @class */ (function () {
-    function StorageBrowserPolicyFactory() {
-    }
+class StorageBrowserPolicyFactory {
     /**
      * Creates a StorageBrowserPolicyFactory object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageBrowserPolicy}
-     * @memberof StorageBrowserPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageBrowserPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageBrowserPolicy(nextPolicy, options);
-    };
-    return StorageBrowserPolicyFactory;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 (function (StorageRetryPolicyType) {
     /**
      * Exponential retry. Retry time delay grows exponentially.
@@ -21630,7 +23666,7 @@ var StorageBrowserPolicyFactory = /** @class */ (function () {
     StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
 })(exports.StorageRetryPolicyType || (exports.StorageRetryPolicyType = {}));
 // Default values of StorageRetryOptions
-var DEFAULT_RETRY_OPTIONS = {
+const DEFAULT_RETRY_OPTIONS = {
     maxRetryDelayInMs: 120 * 1000,
     maxTries: 4,
     retryDelayInMs: 4 * 1000,
@@ -21638,28 +23674,22 @@ var DEFAULT_RETRY_OPTIONS = {
     secondaryHost: "",
     tryTimeoutInMs: undefined // Use server side default timeout strategy
 };
-var RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
+const RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
 /**
  * Retry policy with exponential retry and linear retry implemented.
- *
- * @class RetryPolicy
- * @extends {BaseRequestPolicy}
  */
-var StorageRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageRetryPolicy, _super);
+class StorageRetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of RetryPolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {StorageRetryOptions} [retryOptions=DEFAULT_RETRY_OPTIONS]
-     * @memberof StorageRetryPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param retryOptions -
      */
-    function StorageRetryPolicy(nextPolicy, options, retryOptions) {
-        if (retryOptions === void 0) { retryOptions = DEFAULT_RETRY_OPTIONS; }
-        var _this = _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {
+        super(nextPolicy, options);
         // Initialize retry options
-        _this.retryOptions = {
+        this.retryOptions = {
             retryPolicyType: retryOptions.retryPolicyType
                 ? retryOptions.retryPolicyType
                 : DEFAULT_RETRY_OPTIONS.retryPolicyType,
@@ -21681,101 +23711,73 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
                 ? retryOptions.secondaryHost
                 : DEFAULT_RETRY_OPTIONS.secondaryHost
         };
-        return _this;
     }
     /**
      * Sends request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageRetryPolicy
+     * @param request -
      */
-    StorageRetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this.attemptSendRequest(request, false, 1)];
-            });
-        });
-    };
+    async sendRequest(request) {
+        return this.attemptSendRequest(request, false, 1);
+    }
     /**
      * Decide and perform next retry. Won't mutate request parameter.
      *
-     * @protected
-     * @param {WebResource} request
-     * @param {boolean} secondaryHas404  If attempt was against the secondary & it returned a StatusNotFound (404), then
+     * @param request -
+     * @param secondaryHas404 -  If attempt was against the secondary & it returned a StatusNotFound (404), then
      *                                   the resource was not found. This may be due to replication delay. So, in this
      *                                   case, we'll never try the secondary again for this operation.
-     * @param {number} attempt           How many retries has been attempted to performed, starting from 1, which includes
+     * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes
      *                                   the attempt will be performed by this method call.
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof StorageRetryPolicy
      */
-    StorageRetryPolicy.prototype.attemptSendRequest = function (request, secondaryHas404, attempt) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var newRequest, isPrimaryRetry, response, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        newRequest = request.clone();
-                        isPrimaryRetry = secondaryHas404 ||
-                            !this.retryOptions.secondaryHost ||
-                            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
-                            attempt % 2 === 1;
-                        if (!isPrimaryRetry) {
-                            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
-                        }
-                        // Set the server-side timeout query parameter "timeout=[seconds]"
-                        if (this.retryOptions.tryTimeoutInMs) {
-                            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        logger.info("RetryPolicy: =====> Try=" + attempt + " " + (isPrimaryRetry ? "Primary" : "Secondary"));
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(newRequest)];
-                    case 2:
-                        response = _a.sent();
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
-                            return [2 /*return*/, response];
-                        }
-                        secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        logger.error("RetryPolicy: Caught error, message: " + err_1.message + ", code: " + err_1.code);
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response, err_1)) {
-                            throw err_1;
-                        }
-                        return [3 /*break*/, 4];
-                    case 4: return [4 /*yield*/, this.delay(isPrimaryRetry, attempt, request.abortSignal)];
-                    case 5:
-                        _a.sent();
-                        return [4 /*yield*/, this.attemptSendRequest(request, secondaryHas404, ++attempt)];
-                    case 6: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
+    async attemptSendRequest(request, secondaryHas404, attempt) {
+        const newRequest = request.clone();
+        const isPrimaryRetry = secondaryHas404 ||
+            !this.retryOptions.secondaryHost ||
+            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
+            attempt % 2 === 1;
+        if (!isPrimaryRetry) {
+            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
+        }
+        // Set the server-side timeout query parameter "timeout=[seconds]"
+        if (this.retryOptions.tryTimeoutInMs) {
+            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
+        }
+        let response;
+        try {
+            logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
+            response = await this._nextPolicy.sendRequest(newRequest);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
+                return response;
+            }
+            secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
+        }
+        catch (err) {
+            logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {
+                throw err;
+            }
+        }
+        await this.delay(isPrimaryRetry, attempt, request.abortSignal);
+        return this.attemptSendRequest(request, secondaryHas404, ++attempt);
+    }
     /**
      * Decide whether to retry according to last HTTP response and retry counters.
      *
-     * @protected
-     * @param {boolean} isPrimaryRetry
-     * @param {number} attempt
-     * @param {HttpOperationResponse} [response]
-     * @param {RestError} [err]
-     * @returns {boolean}
-     * @memberof StorageRetryPolicy
+     * @param isPrimaryRetry -
+     * @param attempt -
+     * @param response -
+     * @param err -
      */
-    StorageRetryPolicy.prototype.shouldRetry = function (isPrimaryRetry, attempt, response, err) {
+    shouldRetry(isPrimaryRetry, attempt, response, err) {
         if (attempt >= this.retryOptions.maxTries) {
-            logger.info("RetryPolicy: Attempt(s) " + attempt + " >= maxTries " + this.retryOptions
-                .maxTries + ", no further try.");
+            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions
+                .maxTries}, no further try.`);
             return false;
         }
         // Handle network failures, you may need to customize the list when you implement
         // your own http client
-        var retriableErrors = [
+        const retriableErrors = [
             "ETIMEDOUT",
             "ESOCKETTIMEDOUT",
             "ECONNREFUSED",
@@ -21787,16 +23789,11 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
             "REQUEST_SEND_ERROR" // For default xhr based http client provided in ms-rest-js
         ];
         if (err) {
-            for (var _i = 0, retriableErrors_1 = retriableErrors; _i < retriableErrors_1.length; _i++) {
-                var retriableError = retriableErrors_1[_i];
+            for (const retriableError of retriableErrors) {
                 if (err.name.toUpperCase().includes(retriableError) ||
                     err.message.toUpperCase().includes(retriableError) ||
-                    (err.code &&
-                        err.code
-                            .toString()
-                            .toUpperCase()
-                            .includes(retriableError))) {
-                    logger.info("RetryPolicy: Network error " + retriableError + " found, will retry.");
+                    (err.code && err.code.toString().toUpperCase() === retriableError)) {
+                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
                     return true;
                 }
             }
@@ -21805,290 +23802,213 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
         // the resource was not found. This may be due to replication delay. So, in this
         // case, we'll never try the secondary again for this operation.
         if (response || err) {
-            var statusCode = response ? response.status : err ? err.statusCode : 0;
+            const statusCode = response ? response.status : err ? err.statusCode : 0;
             if (!isPrimaryRetry && statusCode === 404) {
-                logger.info("RetryPolicy: Secondary access with 404, will retry.");
+                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
                 return true;
             }
             // Server internal error or server timeout
             if (statusCode === 503 || statusCode === 500) {
-                logger.info("RetryPolicy: Will retry for status code " + statusCode + ".");
+                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
                 return true;
             }
         }
+        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error "Error: Unclosed root tag`))) {
+            logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
+            return true;
+        }
         return false;
-    };
+    }
     /**
      * Delay a calculated time between retries.
      *
-     * @private
-     * @param {boolean} isPrimaryRetry
-     * @param {number} attempt
-     * @param {AbortSignalLike} [abortSignal]
-     * @memberof StorageRetryPolicy
+     * @param isPrimaryRetry -
+     * @param attempt -
+     * @param abortSignal -
      */
-    StorageRetryPolicy.prototype.delay = function (isPrimaryRetry, attempt, abortSignal) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var delayTimeInMs;
-            return tslib.__generator(this, function (_a) {
-                delayTimeInMs = 0;
-                if (isPrimaryRetry) {
-                    switch (this.retryOptions.retryPolicyType) {
-                        case exports.StorageRetryPolicyType.EXPONENTIAL:
-                            delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
-                            break;
-                        case exports.StorageRetryPolicyType.FIXED:
-                            delayTimeInMs = this.retryOptions.retryDelayInMs;
-                            break;
-                    }
-                }
-                else {
-                    delayTimeInMs = Math.random() * 1000;
-                }
-                logger.info("RetryPolicy: Delay for " + delayTimeInMs + "ms");
-                return [2 /*return*/, delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR)];
-            });
-        });
-    };
-    return StorageRetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async delay(isPrimaryRetry, attempt, abortSignal) {
+        let delayTimeInMs = 0;
+        if (isPrimaryRetry) {
+            switch (this.retryOptions.retryPolicyType) {
+                case exports.StorageRetryPolicyType.EXPONENTIAL:
+                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
+                    break;
+                case exports.StorageRetryPolicyType.FIXED:
+                    delayTimeInMs = this.retryOptions.retryDelayInMs;
+                    break;
+            }
+        }
+        else {
+            delayTimeInMs = Math.random() * 1000;
+        }
+        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
+        return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
- *
- * @export
- * @class StorageRetryPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var StorageRetryPolicyFactory = /** @class */ (function () {
+class StorageRetryPolicyFactory {
     /**
      * Creates an instance of StorageRetryPolicyFactory.
-     * @param {StorageRetryOptions} [retryOptions]
-     * @memberof StorageRetryPolicyFactory
+     * @param retryOptions -
      */
-    function StorageRetryPolicyFactory(retryOptions) {
+    constructor(retryOptions) {
         this.retryOptions = retryOptions;
     }
     /**
      * Creates a StorageRetryPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageRetryPolicy}
-     * @memberof StorageRetryPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageRetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);
-    };
-    return StorageRetryPolicyFactory;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * Credential policy used to sign HTTP(S) requests before sending. This is an
  * abstract class.
- *
- * @export
- * @abstract
- * @class CredentialPolicy
- * @extends {BaseRequestPolicy}
  */
-var CredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(CredentialPolicy, _super);
-    function CredentialPolicy() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class CredentialPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof CredentialPolicy
+     * @param request -
      */
-    CredentialPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         return this._nextPolicy.sendRequest(this.signRequest(request));
-    };
+    }
     /**
      * Child classes must implement this method with request signing. This method
      * will be executed in {@link sendRequest}.
      *
-     * @protected
-     * @abstract
-     * @param {WebResource} request
-     * @returns {WebResource}
-     * @memberof CredentialPolicy
+     * @param request -
      */
-    CredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         // Child classes must override this method with request signing. This method
         // will be executed in sendRequest().
         return request;
-    };
-    return CredentialPolicy;
-}(coreHttp.BaseRequestPolicy));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
  * or for use with Shared Access Signatures (SAS).
- *
- * @export
- * @class AnonymousCredentialPolicy
- * @extends {CredentialPolicy}
  */
-var AnonymousCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredentialPolicy, _super);
+class AnonymousCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of AnonymousCredentialPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @memberof AnonymousCredentialPolicy
+     * @param nextPolicy -
+     * @param options -
      */
-    function AnonymousCredentialPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    return AnonymousCredentialPolicy;
-}(CredentialPolicy));
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Credential is an abstract class for Azure Storage HTTP requests signing. This
  * class will host an credentialPolicyCreator factory which generates CredentialPolicy.
- *
- * @export
- * @abstract
- * @class Credential
  */
-var Credential = /** @class */ (function () {
-    function Credential() {
-    }
+class Credential {
     /**
      * Creates a RequestPolicy object.
      *
-     * @param {RequestPolicy} _nextPolicy
-     * @param {RequestPolicyOptions} _options
-     * @returns {RequestPolicy}
-     * @memberof Credential
+     * @param _nextPolicy -
+     * @param _options -
      */
-    Credential.prototype.create = function (
-    // tslint:disable-next-line:variable-name
-    _nextPolicy, 
-    // tslint:disable-next-line:variable-name
-    _options) {
+    create(_nextPolicy, _options) {
         throw new Error("Method should be implemented in children classes.");
-    };
-    return Credential;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredential provides a credentialPolicyCreator member used to create
  * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with
  * HTTP(S) requests that read public resources or for use with Shared Access
  * Signatures (SAS).
- *
- * @export
- * @class AnonymousCredential
- * @extends {Credential}
  */
-var AnonymousCredential = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredential, _super);
-    function AnonymousCredential() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class AnonymousCredential extends Credential {
     /**
      * Creates an {@link AnonymousCredentialPolicy} object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {AnonymousCredentialPolicy}
-     * @memberof AnonymousCredential
+     * @param nextPolicy -
+     * @param options -
      */
-    AnonymousCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new AnonymousCredentialPolicy(nextPolicy, options);
-    };
-    return AnonymousCredential;
-}(Credential));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicy is a policy used to tag user-agent header for every requests.
- *
- * @class TelemetryPolicy
- * @extends {BaseRequestPolicy}
  */
-var TelemetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TelemetryPolicy, _super);
+class TelemetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of TelemetryPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {string} telemetry
-     * @memberof TelemetryPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param telemetry -
      */
-    function TelemetryPolicy(nextPolicy, options, telemetry) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.telemetry = telemetry;
-        return _this;
+    constructor(nextPolicy, options, telemetry) {
+        super(nextPolicy, options);
+        this.telemetry = telemetry;
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof TelemetryPolicy
+     * @param request -
      */
-    TelemetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    if (!request.headers) {
-                        request.headers = new coreHttp.HttpHeaders();
-                    }
-                    if (!request.headers.get(HeaderConstants.USER_AGENT)) {
-                        request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return TelemetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            if (!request.headers) {
+                request.headers = new coreHttp.HttpHeaders();
+            }
+            if (!request.headers.get(HeaderConstants.USER_AGENT)) {
+                request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.
- *
- * @export
- * @class TelemetryPolicyFactory
- * @implements {RequestPolicyFactory}
  */
-var TelemetryPolicyFactory = /** @class */ (function () {
+class TelemetryPolicyFactory {
     /**
      * Creates an instance of TelemetryPolicyFactory.
-     * @param {UserAgentOptions} [telemetry]
-     * @memberof TelemetryPolicyFactory
+     * @param telemetry -
      */
-    function TelemetryPolicyFactory(telemetry) {
-        var userAgentInfo = [];
+    constructor(telemetry) {
+        const userAgentInfo = [];
         {
             if (telemetry) {
-                // FIXME: replace() only replaces the first space. And we have no idea why we need to replace spaces in the first place.
-                // But fixing this would be a breaking change. Logged an issue here: https://github.com/Azure/azure-sdk-for-js/issues/10793
-                var telemetryString = (telemetry.userAgentPrefix || "").replace(" ", "");
+                const telemetryString = telemetry.userAgentPrefix || "";
                 if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {
                     userAgentInfo.push(telemetryString);
                 }
             }
             // e.g. azsdk-js-storageblob/10.0.0
-            var libInfo = "azsdk-js-storageblob/" + SDK_VERSION;
+            const libInfo = `azsdk-js-storageblob/${SDK_VERSION}`;
             if (userAgentInfo.indexOf(libInfo) === -1) {
                 userAgentInfo.push(libInfo);
             }
             // e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)
-            var runtimeInfo = "(NODE-VERSION " + process.version + "; " + os.type() + " " + os.release() + ")";
+            const runtimeInfo = `(NODE-VERSION ${process.version}; ${os.type()} ${os.release()})`;
             if (userAgentInfo.indexOf(runtimeInfo) === -1) {
                 userAgentInfo.push(runtimeInfo);
             }
@@ -22098,24 +24018,35 @@ var TelemetryPolicyFactory = /** @class */ (function () {
     /**
      * Creates a TelemetryPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {TelemetryPolicy}
-     * @memberof TelemetryPolicyFactory
+     * @param nextPolicy -
+     * @param options -
      */
-    TelemetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new TelemetryPolicy(nextPolicy, options, this.telemetryString);
-    };
-    return TelemetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var _defaultHttpClient = new coreHttp.DefaultHttpClient();
+const _defaultHttpClient = new coreHttp.DefaultHttpClient();
 function getCachedDefaultHttpClient() {
     return _defaultHttpClient;
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
+/**
+ * A helper to decide if a given argument satisfies the Pipeline contract
+ * @param pipeline - An argument that may be a Pipeline
+ * @returns true when the argument satisfies the Pipeline contract
+ */
+function isPipelineLike(pipeline) {
+    if (!pipeline || typeof pipeline !== "object") {
+        return false;
+    }
+    const castPipeline = pipeline;
+    return (Array.isArray(castPipeline.factories) &&
+        typeof castPipeline.options === "object" &&
+        typeof castPipeline.toServiceClientOptions === "function");
+}
 /**
  * A Pipeline class containing HTTP request policies.
  * You can create a default Pipeline by calling {@link newPipeline}.
@@ -22123,65 +24054,59 @@ function getCachedDefaultHttpClient() {
  *
  * Refer to {@link newPipeline} and provided policies before implementing your
  * customized Pipeline.
- *
- * @export
- * @class Pipeline
  */
-var Pipeline = /** @class */ (function () {
+class Pipeline {
     /**
      * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
      *
-     * @param {RequestPolicyFactory[]} factories
-     * @param {PipelineOptions} [options={}]
-     * @memberof Pipeline
+     * @param factories -
+     * @param options -
      */
-    function Pipeline(factories, options) {
-        if (options === void 0) { options = {}; }
+    constructor(factories, options = {}) {
         this.factories = factories;
         // when options.httpClient is not specified, passing in a DefaultHttpClient instance to
         // avoid each client creating its own http client.
-        this.options = tslib.__assign(tslib.__assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
+        this.options = Object.assign(Object.assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
     }
     /**
      * Transfer Pipeline object to ServiceClientOptions object which is required by
      * ServiceClient constructor.
      *
-     * @returns {ServiceClientOptions} The ServiceClientOptions object from this Pipeline.
-     * @memberof Pipeline
+     * @returns The ServiceClientOptions object from this Pipeline.
      */
-    Pipeline.prototype.toServiceClientOptions = function () {
+    toServiceClientOptions() {
         return {
             httpClient: this.options.httpClient,
             requestPolicyFactories: this.factories
         };
-    };
-    return Pipeline;
-}());
+    }
+}
 /**
  * Creates a new Pipeline object with Credential provided.
  *
- * @export
- * @param {StorageSharedKeyCredential | AnonymousCredential | TokenCredential} credential  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the @azure/identity package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
- * @param {StoragePipelineOptions} [pipelineOptions] Optional. Options.
- * @returns {Pipeline} A new Pipeline object.
+ * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
+ * @param pipelineOptions - Optional. Options.
+ * @returns A new Pipeline object.
  */
-function newPipeline(credential, pipelineOptions) {
-    if (pipelineOptions === void 0) { pipelineOptions = {}; }
+function newPipeline(credential, pipelineOptions = {}) {
     if (credential === undefined) {
         credential = new AnonymousCredential();
     }
     // Order is important. Closer to the API at the top & closer to the network at the bottom.
     // The credential's policy factory must appear close to the wire so it can sign any
     // changes made by other factories (like UniqueRequestIDPolicyFactory)
-    var telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
-    var factories = [
+    const telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
+    const factories = [
         coreHttp.tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),
         coreHttp.keepAlivePolicy(pipelineOptions.keepAliveOptions),
         telemetryPolicy,
         coreHttp.generateClientRequestIdPolicy(),
         new StorageBrowserPolicyFactory(),
-        coreHttp.deserializationPolicy(),
         new StorageRetryPolicyFactory(pipelineOptions.retryOptions),
+        // Default deserializationPolicy is provided by protocol layer
+        // Use customized XML char key of "#" so we could deserialize metadata
+        // with "_" key
+        coreHttp.deserializationPolicy(undefined, { xmlCharKey: "#" }),
         coreHttp.logPolicy({
             logger: logger.info,
             allowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,
@@ -22194,2431 +24119,37 @@ function newPipeline(credential, pipelineOptions) {
         factories.push(coreHttp.disableResponseDecompressionPolicy());
     }
     factories.push(coreHttp.isTokenCredential(credential)
-        ? coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes)
+        ? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
         : credential);
     return new Pipeline(factories, pipelineOptions);
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
- *
- * @class RetriableReadableStream
- * @extends {Readable}
- */
-var RetriableReadableStream = /** @class */ (function (_super) {
-    tslib.__extends(RetriableReadableStream, _super);
-    /**
-     * Creates an instance of RetriableReadableStream.
-     *
-     * @param {NodeJS.ReadableStream} source The current ReadableStream returned from getter
-     * @param {ReadableStreamGetter} getter A method calling downloading request returning
-     *                                      a new ReadableStream from specified offset
-     * @param {number} offset Offset position in original data source to read
-     * @param {number} count How much data in original data source to read
-     * @param {RetriableReadableStreamOptions} [options={}]
-     * @memberof RetriableReadableStream
-     */
-    function RetriableReadableStream(source, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.retries = 0;
-        _this.abortHandler = function () {
-            _this.source.pause();
-            _this.emit("error", ABORT_ERROR);
-        };
-        _this.aborter = options.abortSignal || abortController.AbortSignal.none;
-        _this.getter = getter;
-        _this.source = source;
-        _this.start = offset;
-        _this.offset = offset;
-        _this.end = offset + count - 1;
-        _this.maxRetryRequests =
-            options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
-        _this.onProgress = options.onProgress;
-        _this.options = options;
-        _this.aborter.addEventListener("abort", _this.abortHandler);
-        _this.setSourceDataHandler();
-        _this.setSourceEndHandler();
-        _this.setSourceErrorHandler();
-        return _this;
-    }
-    RetriableReadableStream.prototype._read = function () {
-        if (!this.aborter.aborted) {
-            this.source.resume();
-        }
-    };
-    RetriableReadableStream.prototype.setSourceDataHandler = function () {
-        var _this = this;
-        this.source.on("data", function (data) {
-            if (_this.options.doInjectErrorOnce) {
-                _this.options.doInjectErrorOnce = undefined;
-                _this.source.pause();
-                _this.source.removeAllListeners("data");
-                _this.source.emit("end");
-                return;
-            }
-            // console.log(
-            //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
-            // );
-            _this.offset += data.length;
-            if (_this.onProgress) {
-                _this.onProgress({ loadedBytes: _this.offset - _this.start });
-            }
-            if (!_this.push(data)) {
-                _this.source.pause();
-            }
-        });
-    };
-    RetriableReadableStream.prototype.setSourceEndHandler = function () {
-        var _this = this;
-        this.source.on("end", function () {
-            // console.log(
-            //   `Source stream emits end, offset: ${
-            //     this.offset
-            //   }, dest end : ${this.end}`
-            // );
-            if (_this.offset - 1 === _this.end) {
-                _this.aborter.removeEventListener("abort", _this.abortHandler);
-                _this.push(null);
-            }
-            else if (_this.offset <= _this.end) {
-                // console.log(
-                //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
-                // );
-                if (_this.retries < _this.maxRetryRequests) {
-                    _this.retries += 1;
-                    _this.getter(_this.offset)
-                        .then(function (newSource) {
-                        _this.source = newSource;
-                        _this.setSourceDataHandler();
-                        _this.setSourceEndHandler();
-                        _this.setSourceErrorHandler();
-                    })
-                        .catch(function (error) {
-                        _this.emit("error", error);
-                    });
-                }
-                else {
-                    _this.emit("error", new Error(
-                    // tslint:disable-next-line:max-line-length
-                    "Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: " + (_this
-                        .offset - 1) + ", data needed offset: " + _this.end + ", retries: " + _this.retries + ", max retries: " + _this.maxRetryRequests));
-                }
-            }
-            else {
-                _this.emit("error", new Error("Data corruption failure: Received more data than original request, data needed offset is " + _this.end + ", received offset: " + (_this.offset - 1)));
-            }
-        });
-    };
-    RetriableReadableStream.prototype.setSourceErrorHandler = function () {
-        var _this = this;
-        this.source.on("error", function (error) {
-            _this.emit("error", error);
-        });
-    };
-    return RetriableReadableStream;
-}(stream.Readable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * BlobDownloadResponse implements BlobDownloadResponseParsed interface, and in Node.js runtime it will
- * automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot
- * trigger retries defined in pipeline retry policy.)
- *
- * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
- * Readable stream.
- *
- * @export
- * @class BlobDownloadResponse
- * @implements {BlobDownloadResponseParsed}
- */
-var BlobDownloadResponse = /** @class */ (function () {
-    /**
-     * Creates an instance of BlobDownloadResponse.
-     *
-     * @param {BlobDownloadResponseParsed} originalResponse
-     * @param {ReadableStreamGetter} getter
-     * @param {number} offset
-     * @param {number} count
-     * @param {RetriableReadableStreamOptions} [options={}]
-     * @memberof BlobDownloadResponse
-     */
-    function BlobDownloadResponse(originalResponse, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        this.originalResponse = originalResponse;
-        this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
-    }
-    Object.defineProperty(BlobDownloadResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         * @type {(BlobType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyCompletedOn;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         * @type {(CopyStatusType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         * @type {(LeaseDurationType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         * @type {(LeaseStateType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         * @type {(LeaseStatusType | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "tagCount", {
-        /**
-         * The number of tags associated with the blob
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.tagCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         * @type {(Metadata | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "version", {
-        /**
-         * Indicates the version of the Blob service used
-         * to execute the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "versionId", {
-        /**
-         * Indicates the versionId of the downloaded blob version.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.versionId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         *
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationDestinationPolicyId", {
-        /**
-         * Object Replication Policy Id of the destination blob.
-         *
-         * @readonly
-         * @type {(string| undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationDestinationPolicyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationSourceProperties", {
-        /**
-         * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
-         *
-         * @readonly
-         * @type {(ObjectReplicationPolicy[] | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationSourceProperties;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isSealed", {
-        /**
-         * If this blob has been sealed.
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.isSealed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentAsBlob", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         * @type {(Promise<Blob> | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse.blobBody;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will automatically retry when internal read stream unexpected ends.
-         *
-         * @readonly
-         * @type {(NodeJS.ReadableStream | undefined)}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         *
-         * @type {HttpResponse}
-         * @memberof BlobDownloadResponse
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobDownloadResponse;
-}());
-
 // Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-var AVRO_SYNC_MARKER_SIZE = 16;
-var AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
-var AVRO_CODEC_KEY = "avro.codec";
-var AVRO_SCHEMA_KEY = "avro.schema";
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function arraysEqual(a, b) {
-    if (a === b)
-        return true;
-    if (a == null || b == null)
-        return false;
-    if (a.length != b.length)
-        return false;
-    for (var i = 0; i < a.length; ++i) {
-        if (a[i] !== b[i])
-            return false;
-    }
-    return true;
-}
-
-// Copyright (c) Microsoft Corporation.
-var AvroParser = /** @class */ (function () {
-    function AvroParser() {
-    }
-    /**
-     * Reads a fixed number of bytes from the stream.
-     *
-     * @static
-     * @param {AvroReadable} [stream]
-     * @param {number} [length]
-     * @param {AvroParserReadOptions} [options={}]
-     * @returns {Promise<Uint8Array>}
-     * @memberof AvroParser
-     */
-    AvroParser.readFixedBytes = function (stream, length, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bytes;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, stream.read(length, { abortSignal: options.abortSignal })];
-                    case 1:
-                        bytes = _a.sent();
-                        if (bytes.length != length) {
-                            throw new Error("Hit stream end.");
-                        }
-                        return [2 /*return*/, bytes];
-                }
-            });
-        });
-    };
-    /**
-     * Reads a single byte from the stream.
-     *
-     * @static
-     * @param {AvroReadable} [stream]
-     * @param {AvroParserReadOptions} [options={}]
-     * @returns {Promise<number>}
-     * @memberof AvroParser
-     */
-    AvroParser.readByte = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buf;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 1, options)];
-                    case 1:
-                        buf = _a.sent();
-                        return [2 /*return*/, buf[0]];
-                }
-            });
-        });
-    };
-    // int and long are stored in variable-length zig-zag coding.
-    // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
-    // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
-    AvroParser.readZigZagLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var zigZagEncoded, significanceInBit, byte, haveMoreByte, significanceInFloat, res;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        zigZagEncoded = 0;
-                        significanceInBit = 0;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 2:
-                        byte = _a.sent();
-                        haveMoreByte = byte & 0x80;
-                        zigZagEncoded |= (byte & 0x7f) << significanceInBit;
-                        significanceInBit += 7;
-                        _a.label = 3;
-                    case 3:
-                        if (haveMoreByte && significanceInBit < 28) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4:
-                        if (!haveMoreByte) return [3 /*break*/, 9];
-                        // Switch to float arithmetic
-                        zigZagEncoded = zigZagEncoded;
-                        significanceInFloat = 268435456; // 2 ** 28.
-                        _a.label = 5;
-                    case 5: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 6:
-                        byte = _a.sent();
-                        zigZagEncoded += (byte & 0x7f) * significanceInFloat;
-                        significanceInFloat *= 128; // 2 ** 7
-                        _a.label = 7;
-                    case 7:
-                        if (byte & 0x80) return [3 /*break*/, 5];
-                        _a.label = 8;
-                    case 8:
-                        res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
-                        if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
-                            throw new Error("Integer overflow.");
-                        }
-                        return [2 /*return*/, res];
-                    case 9: return [2 /*return*/, (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1)];
-                }
-            });
-        });
-    };
-    AvroParser.readLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readInt = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readNull = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, null];
-            });
-        });
-    };
-    AvroParser.readBoolean = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var b;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 1:
-                        b = _a.sent();
-                        if (b == 1) {
-                            return [2 /*return*/, true];
-                        }
-                        else if (b == 0) {
-                            return [2 /*return*/, false];
-                        }
-                        else {
-                            throw new Error("Byte was not a boolean.");
-                        }
-                }
-            });
-        });
-    };
-    AvroParser.readFloat = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 4, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat32(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readDouble = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 8, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat64(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readBytes = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var size;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        size = _a.sent();
-                        if (size < 0) {
-                            throw new Error("Bytes size was negative.");
-                        }
-                        return [4 /*yield*/, stream.read(size, { abortSignal: options.abortSignal })];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    AvroParser.readString = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, utf8decoder;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        // polyfill TextDecoder to be backward compatible with older
-                        // nodejs that doesn't expose TextDecoder as a global variable
-                        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
-                            global.TextDecoder = __webpack_require__(669).TextDecoder;
-                        }
-                        utf8decoder = new TextDecoder();
-                        return [2 /*return*/, utf8decoder.decode(u8arr)];
-                }
-            });
-        });
-    };
-    AvroParser.readMapPair = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var key, value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 1:
-                        key = _a.sent();
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 2:
-                        value = _a.sent();
-                        return [2 /*return*/, { key: key, value: value }];
-                }
-            });
-        });
-    };
-    AvroParser.readMap = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readPairMethod, pairs, dict, _i, pairs_1, pair;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readPairMethod = function (stream, options) {
-                            if (options === void 0) { options = {}; }
-                            return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, AvroParser.readMapPair(stream, readItemMethod, options)];
-                                        case 1: return [2 /*return*/, _a.sent()];
-                                    }
-                                });
-                            });
-                        };
-                        return [4 /*yield*/, AvroParser.readArray(stream, readPairMethod, options)];
-                    case 1:
-                        pairs = _a.sent();
-                        dict = {};
-                        for (_i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
-                            pair = pairs_1[_i];
-                            dict[pair.key] = pair.value;
-                        }
-                        return [2 /*return*/, dict];
-                }
-            });
-        });
-    };
-    AvroParser.readArray = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var items, count, item;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        items = [];
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        count = _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        if (!(count != 0)) return [3 /*break*/, 8];
-                        if (!(count < 0)) return [3 /*break*/, 4];
-                        // Ignore block sizes
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 3:
-                        // Ignore block sizes
-                        _a.sent();
-                        count = -count;
-                        _a.label = 4;
-                    case 4:
-                        if (!count--) return [3 /*break*/, 6];
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 5:
-                        item = _a.sent();
-                        items.push(item);
-                        return [3 /*break*/, 4];
-                    case 6: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 7:
-                        count = _a.sent();
-                        return [3 /*break*/, 2];
-                    case 8: return [2 /*return*/, items];
-                }
-            });
-        });
-    };
-    return AvroParser;
-}());
-var AvroComplex;
-(function (AvroComplex) {
-    AvroComplex["RECORD"] = "record";
-    AvroComplex["ENUM"] = "enum";
-    AvroComplex["ARRAY"] = "array";
-    AvroComplex["MAP"] = "map";
-    AvroComplex["UNION"] = "union";
-    AvroComplex["FIXED"] = "fixed";
-})(AvroComplex || (AvroComplex = {}));
-var AvroType = /** @class */ (function () {
-    function AvroType() {
-    }
-    /**
-     * Determines the AvroType from the Avro Schema.
-     */
-    AvroType.fromSchema = function (schema) {
-        if (typeof schema == "string") {
-            return AvroType.fromStringSchema(schema);
-        }
-        else if (Array.isArray(schema)) {
-            return AvroType.fromArraySchema(schema);
-        }
-        else {
-            return AvroType.fromObjectSchema(schema);
-        }
-    };
-    AvroType.fromStringSchema = function (schema) {
-        switch (schema) {
-            case AvroPrimitive.NULL:
-            case AvroPrimitive.BOOLEAN:
-            case AvroPrimitive.INT:
-            case AvroPrimitive.LONG:
-            case AvroPrimitive.FLOAT:
-            case AvroPrimitive.DOUBLE:
-            case AvroPrimitive.BYTES:
-            case AvroPrimitive.STRING:
-                return new AvroPrimitiveType(schema);
-            default:
-                throw new Error("Unexpected Avro type " + schema);
-        }
-    };
-    AvroType.fromArraySchema = function (schema) {
-        return new AvroUnionType(schema.map(AvroType.fromSchema));
-    };
-    AvroType.fromObjectSchema = function (schema) {
-        var type = schema.type;
-        // Primitives can be defined as strings or objects
-        try {
-            return AvroType.fromStringSchema(type);
-        }
-        catch (err) { }
-        switch (type) {
-            case AvroComplex.RECORD:
-                if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
-                }
-                if (!schema.name) {
-                    throw new Error("Required attribute 'name' doesn't exist on schema: " + schema);
-                }
-                var fields = {};
-                if (!schema.fields) {
-                    throw new Error("Required attribute 'fields' doesn't exist on schema: " + schema);
-                }
-                for (var _i = 0, _a = schema.fields; _i < _a.length; _i++) {
-                    var field = _a[_i];
-                    fields[field.name] = AvroType.fromSchema(field.type);
-                }
-                return new AvroRecordType(fields, schema.name);
-            case AvroComplex.ENUM:
-                if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
-                }
-                if (!schema.symbols) {
-                    throw new Error("Required attribute 'symbols' doesn't exist on schema: " + schema);
-                }
-                return new AvroEnumType(schema.symbols);
-            case AvroComplex.MAP:
-                if (!schema.values) {
-                    throw new Error("Required attribute 'values' doesn't exist on schema: " + schema);
-                }
-                return new AvroMapType(AvroType.fromSchema(schema.values));
-            case AvroComplex.ARRAY: // Unused today
-            case AvroComplex.FIXED: // Unused today
-            default:
-                throw new Error("Unexpected Avro type " + type + " in " + schema);
-        }
-    };
-    return AvroType;
-}());
-var AvroPrimitive;
-(function (AvroPrimitive) {
-    AvroPrimitive["NULL"] = "null";
-    AvroPrimitive["BOOLEAN"] = "boolean";
-    AvroPrimitive["INT"] = "int";
-    AvroPrimitive["LONG"] = "long";
-    AvroPrimitive["FLOAT"] = "float";
-    AvroPrimitive["DOUBLE"] = "double";
-    AvroPrimitive["BYTES"] = "bytes";
-    AvroPrimitive["STRING"] = "string";
-})(AvroPrimitive || (AvroPrimitive = {}));
-var AvroPrimitiveType = /** @class */ (function (_super) {
-    tslib.__extends(AvroPrimitiveType, _super);
-    function AvroPrimitiveType(primitive) {
-        var _this = _super.call(this) || this;
-        _this._primitive = primitive;
-        return _this;
-    }
-    AvroPrimitiveType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this._primitive;
-                        switch (_a) {
-                            case AvroPrimitive.NULL: return [3 /*break*/, 1];
-                            case AvroPrimitive.BOOLEAN: return [3 /*break*/, 3];
-                            case AvroPrimitive.INT: return [3 /*break*/, 5];
-                            case AvroPrimitive.LONG: return [3 /*break*/, 7];
-                            case AvroPrimitive.FLOAT: return [3 /*break*/, 9];
-                            case AvroPrimitive.DOUBLE: return [3 /*break*/, 11];
-                            case AvroPrimitive.BYTES: return [3 /*break*/, 13];
-                            case AvroPrimitive.STRING: return [3 /*break*/, 15];
-                        }
-                        return [3 /*break*/, 17];
-                    case 1: return [4 /*yield*/, AvroParser.readNull()];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3: return [4 /*yield*/, AvroParser.readBoolean(stream, options)];
-                    case 4: return [2 /*return*/, _b.sent()];
-                    case 5: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 6: return [2 /*return*/, _b.sent()];
-                    case 7: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 8: return [2 /*return*/, _b.sent()];
-                    case 9: return [4 /*yield*/, AvroParser.readFloat(stream, options)];
-                    case 10: return [2 /*return*/, _b.sent()];
-                    case 11: return [4 /*yield*/, AvroParser.readDouble(stream, options)];
-                    case 12: return [2 /*return*/, _b.sent()];
-                    case 13: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 14: return [2 /*return*/, _b.sent()];
-                    case 15: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 16: return [2 /*return*/, _b.sent()];
-                    case 17: throw new Error("Unknown Avro Primitive");
-                }
-            });
-        });
-    };
-    return AvroPrimitiveType;
-}(AvroType));
-var AvroEnumType = /** @class */ (function (_super) {
-    tslib.__extends(AvroEnumType, _super);
-    function AvroEnumType(symbols) {
-        var _this = _super.call(this) || this;
-        _this._symbols = symbols;
-        return _this;
-    }
-    AvroEnumType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        value = _a.sent();
-                        return [2 /*return*/, this._symbols[value]];
-                }
-            });
-        });
-    };
-    return AvroEnumType;
-}(AvroType));
-var AvroUnionType = /** @class */ (function (_super) {
-    tslib.__extends(AvroUnionType, _super);
-    function AvroUnionType(types) {
-        var _this = _super.call(this) || this;
-        _this._types = types;
-        return _this;
-    }
-    AvroUnionType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var typeIndex;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        typeIndex = _a.sent();
-                        return [4 /*yield*/, this._types[typeIndex].read(stream, options)];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroUnionType;
-}(AvroType));
-var AvroMapType = /** @class */ (function (_super) {
-    tslib.__extends(AvroMapType, _super);
-    function AvroMapType(itemType) {
-        var _this = _super.call(this) || this;
-        _this._itemType = itemType;
-        return _this;
-    }
-    AvroMapType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readItemMethod;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readItemMethod = function (s, options) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0: return [4 /*yield*/, this._itemType.read(s, options)];
-                                    case 1: return [2 /*return*/, _a.sent()];
-                                }
-                            });
-                        }); };
-                        return [4 /*yield*/, AvroParser.readMap(stream, readItemMethod, options)];
-                    case 1: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroMapType;
-}(AvroType));
-var AvroRecordType = /** @class */ (function (_super) {
-    tslib.__extends(AvroRecordType, _super);
-    function AvroRecordType(fields, name) {
-        var _this = _super.call(this) || this;
-        _this._fields = fields;
-        _this._name = name;
-        return _this;
-    }
-    AvroRecordType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var record, _a, _b, _i, key, _c, _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        record = {};
-                        record["$schema"] = this._name;
-                        _a = [];
-                        for (_b in this._fields)
-                            _a.push(_b);
-                        _i = 0;
-                        _e.label = 1;
-                    case 1:
-                        if (!(_i < _a.length)) return [3 /*break*/, 4];
-                        key = _a[_i];
-                        if (!this._fields.hasOwnProperty(key)) return [3 /*break*/, 3];
-                        _c = record;
-                        _d = key;
-                        return [4 /*yield*/, this._fields[key].read(stream, options)];
-                    case 2:
-                        _c[_d] = _e.sent();
-                        _e.label = 3;
-                    case 3:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/, record];
-                }
-            });
-        });
-    };
-    return AvroRecordType;
-}(AvroType));
-
-// Copyright (c) Microsoft Corporation.
-var AvroReader = /** @class */ (function () {
-    function AvroReader(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
-        this._dataStream = dataStream;
-        this._headerStream = headerStream || dataStream;
-        this._initialized = false;
-        this._blockOffset = currentBlockOffset || 0;
-        this._objectIndex = indexWithinCurrentBlock || 0;
-        this._initialBlockOffset = currentBlockOffset || 0;
-    }
-    Object.defineProperty(AvroReader.prototype, "blockOffset", {
-        get: function () {
-            return this._blockOffset;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(AvroReader.prototype, "objectIndex", {
-        get: function () {
-            return this._objectIndex;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReader.prototype.initialize = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var header, _a, codec, _b, schema, _c, i;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
-                            abortSignal: options.abortSignal
-                        })];
-                    case 1:
-                        header = _d.sent();
-                        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
-                            throw new Error("Stream is not an Avro file.");
-                        }
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a = this;
-                        return [4 /*yield*/, AvroParser.readMap(this._headerStream, AvroParser.readString, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 2:
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a._metadata = _d.sent();
-                        codec = this._metadata[AVRO_CODEC_KEY];
-                        if (!(codec == undefined || codec == "null")) {
-                            throw new Error("Codecs are not supported");
-                        }
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b = this;
-                        return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 3:
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b._syncMarker = _d.sent();
-                        schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
-                        this._itemType = AvroType.fromSchema(schema);
-                        if (this._blockOffset == 0) {
-                            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        }
-                        _c = this;
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 4:
-                        _c._itemsRemainingInBlock = _d.sent();
-                        // skip block length
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 5:
-                        // skip block length
-                        _d.sent();
-                        this._initialized = true;
-                        if (!(this._objectIndex && this._objectIndex > 0)) return [3 /*break*/, 9];
-                        i = 0;
-                        _d.label = 6;
-                    case 6:
-                        if (!(i < this._objectIndex)) return [3 /*break*/, 9];
-                        return [4 /*yield*/, this._itemType.read(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 7:
-                        _d.sent();
-                        this._itemsRemainingInBlock--;
-                        _d.label = 8;
-                    case 8:
-                        i++;
-                        return [3 /*break*/, 6];
-                    case 9: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    AvroReader.prototype.hasNext = function () {
-        return !this._initialized || this._itemsRemainingInBlock > 0;
-    };
-    AvroReader.prototype.parseObjects = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function parseObjects_1() {
-            var result, marker, _a, err_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!!this._initialized) return [3 /*break*/, 2];
-                        return [4 /*yield*/, tslib.__await(this.initialize(options))];
-                    case 1:
-                        _b.sent();
-                        _b.label = 2;
-                    case 2:
-                        if (!this.hasNext()) return [3 /*break*/, 13];
-                        return [4 /*yield*/, tslib.__await(this._itemType.read(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 3:
-                        result = _b.sent();
-                        this._itemsRemainingInBlock--;
-                        this._objectIndex++;
-                        if (!(this._itemsRemainingInBlock == 0)) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 4:
-                        marker = _b.sent();
-                        this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        this._objectIndex = 0;
-                        if (!arraysEqual(this._syncMarker, marker)) {
-                            throw new Error("Stream is not a valid Avro file.");
-                        }
-                        _b.label = 5;
-                    case 5:
-                        _b.trys.push([5, 7, , 8]);
-                        _a = this;
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 6:
-                        _a._itemsRemainingInBlock = _b.sent();
-                        return [3 /*break*/, 8];
-                    case 7:
-                        err_1 = _b.sent();
-                        // We hit the end of the stream.
-                        this._itemsRemainingInBlock = 0;
-                        return [3 /*break*/, 8];
-                    case 8:
-                        if (!(this._itemsRemainingInBlock > 0)) return [3 /*break*/, 10];
-                        // Ignore block size
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }))];
-                    case 9:
-                        // Ignore block size
-                        _b.sent();
-                        _b.label = 10;
-                    case 10: return [4 /*yield*/, tslib.__await(result)];
-                    case 11: return [4 /*yield*/, _b.sent()];
-                    case 12:
-                        _b.sent();
-                        return [3 /*break*/, 2];
-                    case 13: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return AvroReader;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-var AvroReadable = /** @class */ (function () {
-    function AvroReadable() {
-    }
-    return AvroReadable;
-}());
-
-// Copyright (c) Microsoft Corporation.
-var ABORT_ERROR$1 = new abortController.AbortError("Reading from the avro stream was aborted.");
-var AvroReadableFromStream = /** @class */ (function (_super) {
-    tslib.__extends(AvroReadableFromStream, _super);
-    function AvroReadableFromStream(readable) {
-        var _this = _super.call(this) || this;
-        _this._readable = readable;
-        _this._position = 0;
-        return _this;
-    }
-    AvroReadableFromStream.prototype.toUint8Array = function (data) {
-        if (typeof data === "string") {
-            return Buffer.from(data);
-        }
-        return data;
-    };
-    Object.defineProperty(AvroReadableFromStream.prototype, "position", {
-        get: function () {
-            return this._position;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReadableFromStream.prototype.read = function (size, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var chunk;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
-                    throw ABORT_ERROR$1;
-                }
-                if (size < 0) {
-                    throw new Error("size parameter should be positive: " + size);
-                }
-                if (size === 0) {
-                    return [2 /*return*/, new Uint8Array()];
-                }
-                if (!this._readable.readable) {
-                    throw new Error("Stream no longer readable.");
-                }
-                chunk = this._readable.read(size);
-                if (chunk) {
-                    this._position += chunk.length;
-                    // chunk.length maybe less than desired size if the stream ends.
-                    return [2 /*return*/, this.toUint8Array(chunk)];
-                }
-                else {
-                    // register callback to wait for enough data to read
-                    return [2 /*return*/, new Promise(function (resolve, reject) {
-                            var cleanUp = function () {
-                                _this._readable.removeListener("readable", readableCallback);
-                                _this._readable.removeListener("error", rejectCallback);
-                                _this._readable.removeListener("end", rejectCallback);
-                                _this._readable.removeListener("close", rejectCallback);
-                                if (options.abortSignal) {
-                                    options.abortSignal.removeEventListener("abort", abortHandler);
-                                }
-                            };
-                            var readableCallback = function () {
-                                var chunk = _this._readable.read(size);
-                                if (chunk) {
-                                    _this._position += chunk.length;
-                                    cleanUp();
-                                    // chunk.length maybe less than desired size if the stream ends.
-                                    resolve(_this.toUint8Array(chunk));
-                                }
-                            };
-                            var rejectCallback = function () {
-                                cleanUp();
-                                reject();
-                            };
-                            var abortHandler = function () {
-                                cleanUp();
-                                reject(ABORT_ERROR$1);
-                            };
-                            _this._readable.on("readable", readableCallback);
-                            _this._readable.once("error", rejectCallback);
-                            _this._readable.once("end", rejectCallback);
-                            _this._readable.once("close", rejectCallback);
-                            if (options.abortSignal) {
-                                options.abortSignal.addEventListener("abort", abortHandler);
-                            }
-                        })];
-                }
-            });
-        });
-    };
-    return AvroReadableFromStream;
-}(AvroReadable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
- *
- * @class BlobQuickQueryStream
- * @extends {Readable}
- */
-var BlobQuickQueryStream = /** @class */ (function (_super) {
-    tslib.__extends(BlobQuickQueryStream, _super);
-    /**
-     * Creates an instance of BlobQuickQueryStream.
-     *
-     * @param {NodeJS.ReadableStream} source The current ReadableStream returned from getter
-     * @param {BlobQuickQueryStreamOptions} [options={}]
-     * @memberof BlobQuickQueryStream
-     */
-    function BlobQuickQueryStream(source, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.source = source;
-        _this.onProgress = options.onProgress;
-        _this.onError = options.onError;
-        _this.avroReader = new AvroReader(new AvroReadableFromStream(_this.source));
-        _this.avroIter = _this.avroReader.parseObjects({ abortSignal: options.abortSignal });
-        return _this;
-    }
-    BlobQuickQueryStream.prototype._read = function () {
-        var _this = this;
-        this.readInternal().catch(function (err) {
-            _this.emit("error", err);
-        });
-    };
-    BlobQuickQueryStream.prototype.readInternal = function () {
-        var e_1, _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, _c, obj, schema, exit, data, bytesScanned, totalBytes, fatal, name_1, description, position, e_1_1;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 5, 6, 11]);
-                        _b = tslib.__asyncValues(this.avroIter);
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, _b.next()];
-                    case 2:
-                        if (!(_c = _d.sent(), !_c.done)) return [3 /*break*/, 4];
-                        obj = _c.value;
-                        schema = obj.$schema;
-                        if (typeof schema !== "string") {
-                            throw Error("Missing schema in avro record.");
-                        }
-                        exit = false;
-                        switch (schema) {
-                            case "com.microsoft.azure.storage.queryBlobContents.resultData":
-                                data = obj.data;
-                                if (data instanceof Uint8Array === false) {
-                                    throw Error("Invalid data in avro result record.");
-                                }
-                                if (!this.push(Buffer.from(data))) {
-                                    exit = true;
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.progress":
-                                bytesScanned = obj.bytesScanned;
-                                if (typeof bytesScanned !== "number") {
-                                    throw Error("Invalid bytesScanned in avro progress record.");
-                                }
-                                if (this.onProgress) {
-                                    this.onProgress({ loadedBytes: bytesScanned });
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.end":
-                                if (this.onProgress) {
-                                    totalBytes = obj.totalBytes;
-                                    if (typeof totalBytes !== "number") {
-                                        throw Error("Invalid totalBytes in avro end record.");
-                                    }
-                                    this.onProgress({ loadedBytes: totalBytes });
-                                }
-                                this.push(null);
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.error":
-                                if (this.onError) {
-                                    fatal = obj.fatal;
-                                    if (typeof fatal !== "boolean") {
-                                        throw Error("Invalid fatal in avro error record.");
-                                    }
-                                    name_1 = obj.name;
-                                    if (typeof name_1 !== "string") {
-                                        throw Error("Invalid name in avro error record.");
-                                    }
-                                    description = obj.description;
-                                    if (typeof description !== "string") {
-                                        throw Error("Invalid description in avro error record.");
-                                    }
-                                    position = obj.position;
-                                    if (typeof position !== "number") {
-                                        throw Error("Invalid position in avro error record.");
-                                    }
-                                    this.onError({
-                                        position: position,
-                                        name: name_1,
-                                        isFatal: fatal,
-                                        description: description
-                                    });
-                                }
-                                break;
-                            default:
-                                throw Error("Unknown schema " + schema + " in avro progress record.");
-                        }
-                        if (exit) {
-                            return [3 /*break*/, 4];
-                        }
-                        _d.label = 3;
-                    case 3: return [3 /*break*/, 1];
-                    case 4: return [3 /*break*/, 11];
-                    case 5:
-                        e_1_1 = _d.sent();
-                        e_1 = { error: e_1_1 };
-                        return [3 /*break*/, 11];
-                    case 6:
-                        _d.trys.push([6, , 9, 10]);
-                        if (!(_c && !_c.done && (_a = _b.return))) return [3 /*break*/, 8];
-                        return [4 /*yield*/, _a.call(_b)];
-                    case 7:
-                        _d.sent();
-                        _d.label = 8;
-                    case 8: return [3 /*break*/, 10];
-                    case 9:
-                        if (e_1) throw e_1.error;
-                        return [7 /*endfinally*/];
-                    case 10: return [7 /*endfinally*/];
-                    case 11: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobQuickQueryStream;
-}(stream.Readable));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
- * parse avor data returned by blob query.
- *
- * @export
- * @class BlobQueryResponse
- * @implements {BlobDownloadResponseModel}
- */
-var BlobQueryResponse = /** @class */ (function () {
-    /**
-     * Creates an instance of BlobQueryResponse.
-     *
-     * @param {BlobQueryResponseModel} originalResponse
-     * @param {BlobQuickQueryStreamOptions} [options={}]
-     * @memberof BlobQueryResponse
-     */
-    function BlobQueryResponse(originalResponse, options) {
-        if (options === void 0) { options = {}; }
-        this.originalResponse = originalResponse;
-        this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
-    }
-    Object.defineProperty(BlobQueryResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         * @type {(BlobType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         * @type {(CopyStatusType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         * @type {(LeaseDurationType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         * @type {(LeaseStateType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         * @type {(LeaseStatusType | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         * @type {(number | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         * @type {(boolean | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         * @type {(Date | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         * @type {(Metadata | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "version", {
-        /**
-         * Indicates the version of the File service used
-         * to execute the request.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         * @type {(string | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         *
-         * @type {(Uint8Array | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobBody", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         * @type {(Promise<Blob> | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will parse avor data returned by blob query.
-         *
-         * @readonly
-         * @type {(NodeJS.ReadableStream | undefined)}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         *
-         * @type {HttpResponse}
-         * @memberof BlobQueryResponse
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobQueryResponse;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
 /**
  * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
- *
- * @export
- * @class StorageSharedKeyCredentialPolicy
- * @extends {CredentialPolicy}
  */
-var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredentialPolicy, _super);
+class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of StorageSharedKeyCredentialPolicy.
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {StorageSharedKeyCredential} factory
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param nextPolicy -
+     * @param options -
+     * @param factory -
      */
-    function StorageSharedKeyCredentialPolicy(nextPolicy, options, factory) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.factory = factory;
-        return _this;
+    constructor(nextPolicy, options, factory) {
+        super(nextPolicy, options);
+        this.factory = factory;
     }
     /**
      * Signs request.
      *
-     * @protected
-     * @param {WebResource} request
-     * @returns {WebResource}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
         if (request.body && typeof request.body === "string" && request.body.length > 0) {
             request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
         }
-        var stringToSign = [
+        const stringToSign = [
             request.method.toUpperCase(),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
@@ -24635,26 +24166,23 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             "\n" +
             this.getCanonicalizedHeadersString(request) +
             this.getCanonicalizedResourceString(request);
-        var signature = this.factory.computeHMACSHA256(stringToSign);
-        request.headers.set(HeaderConstants.AUTHORIZATION, "SharedKey " + this.factory.accountName + ":" + signature);
+        const signature = this.factory.computeHMACSHA256(stringToSign);
+        request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
         // console.log(`[URL]:${request.url}`);
         // console.log(`[HEADERS]:${request.headers.toString()}`);
         // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
         // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
         return request;
-    };
+    }
     /**
      * Retrieve header value according to shared key sign rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
      *
-     * @private
-     * @param {WebResource} request
-     * @param {string} headerName
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
+     * @param headerName -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getHeaderValueToSign = function (request, headerName) {
-        var value = request.headers.get(headerName);
+    getHeaderValueToSign(request, headerName) {
+        const value = request.headers.get(headerName);
         if (!value) {
             return "";
         }
@@ -24665,7 +24193,7 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             return "";
         }
         return value;
-    };
+    }
     /**
      * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
      * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
@@ -24677,159 +24205,2980 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      * 6. Finally, append a new-line character to each canonicalized header in the resulting list.
      *    Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
      *
-     * @private
-     * @param {WebResource} request
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedHeadersString = function (request) {
-        var headersArray = request.headers.headersArray().filter(function (value) {
+    getCanonicalizedHeadersString(request) {
+        let headersArray = request.headers.headersArray().filter((value) => {
             return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
         });
-        headersArray.sort(function (a, b) {
+        headersArray.sort((a, b) => {
             return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
         });
         // Remove duplicate headers
-        headersArray = headersArray.filter(function (value, index, array) {
+        headersArray = headersArray.filter((value, index, array) => {
             if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
                 return false;
             }
             return true;
         });
-        var canonicalizedHeadersStringToSign = "";
-        headersArray.forEach(function (header) {
-            canonicalizedHeadersStringToSign += header.name
+        let canonicalizedHeadersStringToSign = "";
+        headersArray.forEach((header) => {
+            canonicalizedHeadersStringToSign += `${header.name
                 .toLowerCase()
-                .trimRight() + ":" + header.value.trimLeft() + "\n";
+                .trimRight()}:${header.value.trimLeft()}\n`;
         });
         return canonicalizedHeadersStringToSign;
-    };
+    }
     /**
      * Retrieves the webResource canonicalized resource string.
      *
-     * @private
-     * @param {WebResource} request
-     * @returns {string}
-     * @memberof StorageSharedKeyCredentialPolicy
+     * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedResourceString = function (request) {
-        var path = getURLPath(request.url) || "/";
-        var canonicalizedResourceString = "";
-        canonicalizedResourceString += "/" + this.factory.accountName + path;
-        var queries = getURLQueries(request.url);
-        var lowercaseQueries = {};
+    getCanonicalizedResourceString(request) {
+        const path = getURLPath(request.url) || "/";
+        let canonicalizedResourceString = "";
+        canonicalizedResourceString += `/${this.factory.accountName}${path}`;
+        const queries = getURLQueries(request.url);
+        const lowercaseQueries = {};
         if (queries) {
-            var queryKeys = [];
-            for (var key in queries) {
-                if (queries.hasOwnProperty(key)) {
-                    var lowercaseKey = key.toLowerCase();
+            const queryKeys = [];
+            for (const key in queries) {
+                if (Object.prototype.hasOwnProperty.call(queries, key)) {
+                    const lowercaseKey = key.toLowerCase();
                     lowercaseQueries[lowercaseKey] = queries[key];
                     queryKeys.push(lowercaseKey);
                 }
             }
             queryKeys.sort();
-            for (var _i = 0, queryKeys_1 = queryKeys; _i < queryKeys_1.length; _i++) {
-                var key = queryKeys_1[_i];
-                canonicalizedResourceString += "\n" + key + ":" + decodeURIComponent(lowercaseQueries[key]);
+            for (const key of queryKeys) {
+                canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
             }
         }
         return canonicalizedResourceString;
-    };
-    return StorageSharedKeyCredentialPolicy;
-}(CredentialPolicy));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * ONLY AVAILABLE IN NODE.JS RUNTIME.
  *
  * StorageSharedKeyCredential for account key authorization of Azure Storage service.
- *
- * @export
- * @class StorageSharedKeyCredential
- * @extends {Credential}
  */
-var StorageSharedKeyCredential = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredential, _super);
+class StorageSharedKeyCredential extends Credential {
     /**
      * Creates an instance of StorageSharedKeyCredential.
-     * @param {string} accountName
-     * @param {string} accountKey
-     * @memberof StorageSharedKeyCredential
+     * @param accountName -
+     * @param accountKey -
      */
-    function StorageSharedKeyCredential(accountName, accountKey) {
-        var _this = _super.call(this) || this;
-        _this.accountName = accountName;
-        _this.accountKey = Buffer.from(accountKey, "base64");
-        return _this;
+    constructor(accountName, accountKey) {
+        super();
+        this.accountName = accountName;
+        this.accountKey = Buffer.from(accountKey, "base64");
     }
     /**
      * Creates a StorageSharedKeyCredentialPolicy object.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @returns {StorageSharedKeyCredentialPolicy}
-     * @memberof StorageSharedKeyCredential
+     * @param nextPolicy -
+     * @param options -
      */
-    StorageSharedKeyCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageSharedKeyCredentialPolicy(nextPolicy, options, this);
-    };
+    }
     /**
      * Generates a hash signature for an HTTP request or for a SAS.
      *
-     * @param {string} stringToSign
-     * @returns {string}
-     * @memberof StorageSharedKeyCredential
+     * @param stringToSign -
      */
-    StorageSharedKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         return crypto.createHmac("sha256", this.accountKey)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return StorageSharedKeyCredential;
-}(Credential));
+    }
+}
 
 /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
  *
  * Code generated by Microsoft (R) AutoRest Code Generator.
- * Changes may cause incorrect behavior and will be lost if the code is
- * regenerated.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var packageName = "azure-storage-blob";
-var packageVersion = "12.2.1";
-var StorageClientContext = /** @class */ (function (_super) {
-    tslib.__extends(StorageClientContext, _super);
+const packageName = "azure-storage-blob";
+const packageVersion = "12.8.0";
+class StorageClientContext extends coreHttp.ServiceClient {
     /**
      * Initializes a new instance of the StorageClientContext class.
-     * @param url The URL of the service account, container, or blob that is the targe of the desired
-     * operation.
-     * @param [options] The parameter options
+     * @param url The URL of the service account, container, or blob that is the target of the desired
+     *            operation.
+     * @param options The parameter options
      */
-    function StorageClientContext(url, options) {
-        var _this = this;
-        if (url == undefined) {
-            throw new Error("'url' cannot be null.");
+    constructor(url, options) {
+        if (url === undefined) {
+            throw new Error("'url' cannot be null");
         }
+        // Initializing default values for options
         if (!options) {
             options = {};
         }
         if (!options.userAgent) {
-            var defaultUserAgent = coreHttp.getDefaultUserAgentValue();
-            options.userAgent = packageName + "/" + packageVersion + " " + defaultUserAgent;
+            const defaultUserAgent = coreHttp.getDefaultUserAgentValue();
+            options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
         }
-        _this = _super.call(this, undefined, options) || this;
-        _this.version = "2019-12-12";
-        _this.baseUri = "{url}";
-        _this.requestContentType = "application/json; charset=utf-8";
-        _this.url = url;
-        return _this;
+        super(undefined, options);
+        this.requestContentType = "application/json; charset=utf-8";
+        this.baseUri = options.endpoint || "{url}";
+        // Parameter assignments
+        this.url = url;
+        // Assigning values to Constant parameters
+        this.version = options.version || "2020-10-02";
     }
-    return StorageClientContext;
-}(coreHttp.ServiceClient));
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
+/**
+ * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
+ * and etc.
+ */
+class StorageClient {
+    /**
+     * Creates an instance of StorageClient.
+     * @param url - url to resource
+     * @param pipeline - request policy pipeline.
+     */
+    constructor(url, pipeline) {
+        // URL should be encoded and only once, protocol layer shouldn't encode URL again
+        this.url = escapeURLPath(url);
+        this.accountName = getAccountNameFromUrl(url);
+        this.pipeline = pipeline;
+        this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
+        this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
+        this.credential = new AnonymousCredential();
+        for (const factory of this.pipeline.factories) {
+            if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
+                factory instanceof AnonymousCredential) {
+                this.credential = factory;
+            }
+            else if (coreHttp.isTokenCredential(factory.credential)) {
+                // Only works if the factory has been attached a "credential" property.
+                // We do that in newPipeline() when using TokenCredential.
+                this.credential = factory.credential;
+            }
+        }
+        // Override protocol layer's default content-type
+        const storageClientContext = this.storageClientContext;
+        storageClientContext.requestContentType = undefined;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * Creates a span using the global tracer.
+ * @internal
+ */
+const createSpan = coreTracing.createSpanFunction({
+    packagePrefix: "Azure.Storage.Blob",
+    namespace: "Microsoft.Storage"
+});
+/**
+ * @internal
+ *
+ * Adapt the tracing options from OperationOptions to what they need to be for
+ * RequestOptionsBase (when we update to later OpenTelemetry versions this is now
+ * two separate fields, not just one).
+ */
+function convertTracingToRequestOptionsBase(options) {
+    var _a, _b;
+    return {
+        // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+        spanOptions: (_a = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions,
+        tracingContext: (_b = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _b === void 0 ? void 0 : _b.tracingContext
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting
+ * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
+ * the values are set, this should be serialized with toString and set as the permissions field on a
+ * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class BlobSASPermissions {
+    constructor() {
+        /**
+         * Specifies Read access granted.
+         */
+        this.read = false;
+        /**
+         * Specifies Add access granted.
+         */
+        this.add = false;
+        /**
+         * Specifies Create access granted.
+         */
+        this.create = false;
+        /**
+         * Specifies Write access granted.
+         */
+        this.write = false;
+        /**
+         * Specifies Delete access granted.
+         */
+        this.delete = false;
+        /**
+         * Specifies Delete version access granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Specifies Move access granted.
+         */
+        this.move = false;
+        /**
+         * Specifies Execute access granted.
+         */
+        this.execute = false;
+        /**
+         * Specifies SetImmutabilityPolicy access granted.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid permission.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const blobSASPermissions = new BlobSASPermissions();
+        for (const char of permissions) {
+            switch (char) {
+                case "r":
+                    blobSASPermissions.read = true;
+                    break;
+                case "a":
+                    blobSASPermissions.add = true;
+                    break;
+                case "c":
+                    blobSASPermissions.create = true;
+                    break;
+                case "w":
+                    blobSASPermissions.write = true;
+                    break;
+                case "d":
+                    blobSASPermissions.delete = true;
+                    break;
+                case "x":
+                    blobSASPermissions.deleteVersion = true;
+                    break;
+                case "t":
+                    blobSASPermissions.tag = true;
+                    break;
+                case "m":
+                    blobSASPermissions.move = true;
+                    break;
+                case "e":
+                    blobSASPermissions.execute = true;
+                    break;
+                case "i":
+                    blobSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission: ${char}`);
+            }
+        }
+        return blobSASPermissions;
+    }
+    /**
+     * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const blobSASPermissions = new BlobSASPermissions();
+        if (permissionLike.read) {
+            blobSASPermissions.read = true;
+        }
+        if (permissionLike.add) {
+            blobSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            blobSASPermissions.create = true;
+        }
+        if (permissionLike.write) {
+            blobSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            blobSASPermissions.delete = true;
+        }
+        if (permissionLike.deleteVersion) {
+            blobSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.tag) {
+            blobSASPermissions.tag = true;
+        }
+        if (permissionLike.move) {
+            blobSASPermissions.move = true;
+        }
+        if (permissionLike.execute) {
+            blobSASPermissions.execute = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            blobSASPermissions.setImmutabilityPolicy = true;
+        }
+        return blobSASPermissions;
+    }
+    /**
+     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
+     * order accepted by the service.
+     *
+     * @returns A string which represents the BlobSASPermissions
+     */
+    toString() {
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.move) {
+            permissions.push("m");
+        }
+        if (this.execute) {
+            permissions.push("e");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.
+ * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
+ * Once all the values are set, this should be serialized with toString and set as the permissions field on a
+ * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class ContainerSASPermissions {
+    constructor() {
+        /**
+         * Specifies Read access granted.
+         */
+        this.read = false;
+        /**
+         * Specifies Add access granted.
+         */
+        this.add = false;
+        /**
+         * Specifies Create access granted.
+         */
+        this.create = false;
+        /**
+         * Specifies Write access granted.
+         */
+        this.write = false;
+        /**
+         * Specifies Delete access granted.
+         */
+        this.delete = false;
+        /**
+         * Specifies Delete version access granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Specifies List access granted.
+         */
+        this.list = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Specifies Move access granted.
+         */
+        this.move = false;
+        /**
+         * Specifies Execute access granted.
+         */
+        this.execute = false;
+        /**
+         * Specifies SetImmutabilityPolicy access granted.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid permission.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        for (const char of permissions) {
+            switch (char) {
+                case "r":
+                    containerSASPermissions.read = true;
+                    break;
+                case "a":
+                    containerSASPermissions.add = true;
+                    break;
+                case "c":
+                    containerSASPermissions.create = true;
+                    break;
+                case "w":
+                    containerSASPermissions.write = true;
+                    break;
+                case "d":
+                    containerSASPermissions.delete = true;
+                    break;
+                case "l":
+                    containerSASPermissions.list = true;
+                    break;
+                case "t":
+                    containerSASPermissions.tag = true;
+                    break;
+                case "x":
+                    containerSASPermissions.deleteVersion = true;
+                    break;
+                case "m":
+                    containerSASPermissions.move = true;
+                    break;
+                case "e":
+                    containerSASPermissions.execute = true;
+                    break;
+                case "i":
+                    containerSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission ${char}`);
+            }
+        }
+        return containerSASPermissions;
+    }
+    /**
+     * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        if (permissionLike.read) {
+            containerSASPermissions.read = true;
+        }
+        if (permissionLike.add) {
+            containerSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            containerSASPermissions.create = true;
+        }
+        if (permissionLike.write) {
+            containerSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            containerSASPermissions.delete = true;
+        }
+        if (permissionLike.list) {
+            containerSASPermissions.list = true;
+        }
+        if (permissionLike.deleteVersion) {
+            containerSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.tag) {
+            containerSASPermissions.tag = true;
+        }
+        if (permissionLike.move) {
+            containerSASPermissions.move = true;
+        }
+        if (permissionLike.execute) {
+            containerSASPermissions.execute = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            containerSASPermissions.setImmutabilityPolicy = true;
+        }
+        return containerSASPermissions;
+    }
+    /**
+     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
+     * order accepted by the service.
+     *
+     * The order of the characters should be as specified here to ensure correctness.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     */
+    toString() {
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.list) {
+            permissions.push("l");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.move) {
+            permissions.push("m");
+        }
+        if (this.execute) {
+            permissions.push("e");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * UserDelegationKeyCredential is only used for generation of user delegation SAS.
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
+ */
+class UserDelegationKeyCredential {
+    /**
+     * Creates an instance of UserDelegationKeyCredential.
+     * @param accountName -
+     * @param userDelegationKey -
+     */
+    constructor(accountName, userDelegationKey) {
+        this.accountName = accountName;
+        this.userDelegationKey = userDelegationKey;
+        this.key = Buffer.from(userDelegationKey.value, "base64");
+    }
+    /**
+     * Generates a hash signature for an HTTP request or for a SAS.
+     *
+     * @param stringToSign -
+     */
+    computeHMACSHA256(stringToSign) {
+        // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
+        return crypto.createHmac("sha256", this.key)
+            .update(stringToSign, "utf8")
+            .digest("base64");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Generate SasIPRange format string. For example:
+ *
+ * "8.8.8.8" or "1.1.1.1-255.255.255.255"
+ *
+ * @param ipRange -
+ */
+function ipRangeToString(ipRange) {
+    return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;
+}
+
+// Copyright (c) Microsoft Corporation.
+(function (SASProtocol) {
+    /**
+     * Protocol that allows HTTPS only
+     */
+    SASProtocol["Https"] = "https";
+    /**
+     * Protocol that allows both HTTPS and HTTP
+     */
+    SASProtocol["HttpsAndHttp"] = "https,http";
+})(exports.SASProtocol || (exports.SASProtocol = {}));
+/**
+ * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
+ * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}
+ * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should
+ * be taken here in case there are existing query parameters, which might affect the appropriate means of appending
+ * these query parameters).
+ *
+ * NOTE: Instances of this class are immutable.
+ */
+class SASQueryParameters {
+    constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
+        this.version = version;
+        this.signature = signature;
+        if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== "string") {
+            // SASQueryParametersOptions
+            this.permissions = permissionsOrOptions.permissions;
+            this.services = permissionsOrOptions.services;
+            this.resourceTypes = permissionsOrOptions.resourceTypes;
+            this.protocol = permissionsOrOptions.protocol;
+            this.startsOn = permissionsOrOptions.startsOn;
+            this.expiresOn = permissionsOrOptions.expiresOn;
+            this.ipRangeInner = permissionsOrOptions.ipRange;
+            this.identifier = permissionsOrOptions.identifier;
+            this.resource = permissionsOrOptions.resource;
+            this.cacheControl = permissionsOrOptions.cacheControl;
+            this.contentDisposition = permissionsOrOptions.contentDisposition;
+            this.contentEncoding = permissionsOrOptions.contentEncoding;
+            this.contentLanguage = permissionsOrOptions.contentLanguage;
+            this.contentType = permissionsOrOptions.contentType;
+            if (permissionsOrOptions.userDelegationKey) {
+                this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;
+                this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;
+                this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;
+                this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;
+                this.signedService = permissionsOrOptions.userDelegationKey.signedService;
+                this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;
+                this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;
+                this.correlationId = permissionsOrOptions.correlationId;
+            }
+        }
+        else {
+            this.services = services;
+            this.resourceTypes = resourceTypes;
+            this.expiresOn = expiresOn;
+            this.permissions = permissionsOrOptions;
+            this.protocol = protocol;
+            this.startsOn = startsOn;
+            this.ipRangeInner = ipRange;
+            this.identifier = identifier;
+            this.resource = resource;
+            this.cacheControl = cacheControl;
+            this.contentDisposition = contentDisposition;
+            this.contentEncoding = contentEncoding;
+            this.contentLanguage = contentLanguage;
+            this.contentType = contentType;
+            if (userDelegationKey) {
+                this.signedOid = userDelegationKey.signedObjectId;
+                this.signedTenantId = userDelegationKey.signedTenantId;
+                this.signedStartsOn = userDelegationKey.signedStartsOn;
+                this.signedExpiresOn = userDelegationKey.signedExpiresOn;
+                this.signedService = userDelegationKey.signedService;
+                this.signedVersion = userDelegationKey.signedVersion;
+                this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;
+                this.correlationId = correlationId;
+            }
+        }
+    }
+    /**
+     * Optional. IP range allowed for this SAS.
+     *
+     * @readonly
+     */
+    get ipRange() {
+        if (this.ipRangeInner) {
+            return {
+                end: this.ipRangeInner.end,
+                start: this.ipRangeInner.start
+            };
+        }
+        return undefined;
+    }
+    /**
+     * Encodes all SAS query parameters into a string that can be appended to a URL.
+     *
+     */
+    toString() {
+        const params = [
+            "sv",
+            "ss",
+            "srt",
+            "spr",
+            "st",
+            "se",
+            "sip",
+            "si",
+            "skoid",
+            "sktid",
+            "skt",
+            "ske",
+            "sks",
+            "skv",
+            "sr",
+            "sp",
+            "sig",
+            "rscc",
+            "rscd",
+            "rsce",
+            "rscl",
+            "rsct",
+            "saoid",
+            "scid"
+        ];
+        const queries = [];
+        for (const param of params) {
+            switch (param) {
+                case "sv":
+                    this.tryAppendQueryParameter(queries, param, this.version);
+                    break;
+                case "ss":
+                    this.tryAppendQueryParameter(queries, param, this.services);
+                    break;
+                case "srt":
+                    this.tryAppendQueryParameter(queries, param, this.resourceTypes);
+                    break;
+                case "spr":
+                    this.tryAppendQueryParameter(queries, param, this.protocol);
+                    break;
+                case "st":
+                    this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);
+                    break;
+                case "se":
+                    this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);
+                    break;
+                case "sip":
+                    this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);
+                    break;
+                case "si":
+                    this.tryAppendQueryParameter(queries, param, this.identifier);
+                    break;
+                case "skoid": // Signed object ID
+                    this.tryAppendQueryParameter(queries, param, this.signedOid);
+                    break;
+                case "sktid": // Signed tenant ID
+                    this.tryAppendQueryParameter(queries, param, this.signedTenantId);
+                    break;
+                case "skt": // Signed key start time
+                    this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);
+                    break;
+                case "ske": // Signed key expiry time
+                    this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);
+                    break;
+                case "sks": // Signed key service
+                    this.tryAppendQueryParameter(queries, param, this.signedService);
+                    break;
+                case "skv": // Signed key version
+                    this.tryAppendQueryParameter(queries, param, this.signedVersion);
+                    break;
+                case "sr":
+                    this.tryAppendQueryParameter(queries, param, this.resource);
+                    break;
+                case "sp":
+                    this.tryAppendQueryParameter(queries, param, this.permissions);
+                    break;
+                case "sig":
+                    this.tryAppendQueryParameter(queries, param, this.signature);
+                    break;
+                case "rscc":
+                    this.tryAppendQueryParameter(queries, param, this.cacheControl);
+                    break;
+                case "rscd":
+                    this.tryAppendQueryParameter(queries, param, this.contentDisposition);
+                    break;
+                case "rsce":
+                    this.tryAppendQueryParameter(queries, param, this.contentEncoding);
+                    break;
+                case "rscl":
+                    this.tryAppendQueryParameter(queries, param, this.contentLanguage);
+                    break;
+                case "rsct":
+                    this.tryAppendQueryParameter(queries, param, this.contentType);
+                    break;
+                case "saoid":
+                    this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);
+                    break;
+                case "scid":
+                    this.tryAppendQueryParameter(queries, param, this.correlationId);
+                    break;
+            }
+        }
+        return queries.join("&");
+    }
+    /**
+     * A private helper method used to filter and append query key/value pairs into an array.
+     *
+     * @param queries -
+     * @param key -
+     * @param value -
+     */
+    tryAppendQueryParameter(queries, key, value) {
+        if (!value) {
+            return;
+        }
+        key = encodeURIComponent(key);
+        value = encodeURIComponent(value);
+        if (key.length > 0 && value.length > 0) {
+            queries.push(`${key}=${value}`);
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
+        ? sharedKeyCredentialOrUserDelegationKey
+        : undefined;
+    let userDelegationKeyCredential;
+    if (sharedKeyCredential === undefined && accountName !== undefined) {
+        userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
+    }
+    if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {
+        throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.");
+    }
+    // Version 2019-12-12 adds support for the blob tags permission.
+    // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
+    // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
+    if (version >= "2018-11-09") {
+        if (sharedKeyCredential !== undefined) {
+            return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);
+        }
+        else {
+            // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.
+            if (version >= "2020-02-10") {
+                return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);
+            }
+            else {
+                return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);
+            }
+        }
+    }
+    if (version >= "2015-04-05") {
+        if (sharedKeyCredential !== undefined) {
+            return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);
+        }
+        else {
+            throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.");
+        }
+    }
+    throw new RangeError("'version' must be >= '2015-04-05'.");
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn and identifier.
+ *
+ * WARNING: When identifier is not provided, permissions and expiresOn are required.
+ * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
+ * this constructor.
+ *
+ * @param blobSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    if (!blobSASSignatureValues.identifier &&
+        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
+    }
+    let resource = "c";
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        blobSASSignatureValues.identifier,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
+        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
+        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
+        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
+        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn and identifier.
+ *
+ * WARNING: When identifier is not provided, permissions and expiresOn are required.
+ * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
+ * this constructor.
+ *
+ * @param blobSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    if (!blobSASSignatureValues.identifier &&
+        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        blobSASSignatureValues.identifier,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
+        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
+        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
+        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
+        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn.
+ *
+ * WARNING: identifier will be ignored, permissions and expiresOn are required.
+ *
+ * @param blobSASSignatureValues -
+ * @param userDelegationKeyCredential -
+ */
+function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    // Stored access policies are not supported for a user delegation SAS.
+    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        userDelegationKeyCredential.userDelegationKey.signedObjectId,
+        userDelegationKeyCredential.userDelegationKey.signedTenantId,
+        userDelegationKeyCredential.userDelegationKey.signedStartsOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedService,
+        userDelegationKeyCredential.userDelegationKey.signedVersion,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl,
+        blobSASSignatureValues.contentDisposition,
+        blobSASSignatureValues.contentEncoding,
+        blobSASSignatureValues.contentLanguage,
+        blobSASSignatureValues.contentType
+    ].join("\n");
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
+}
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.
+ *
+ * Creates an instance of SASQueryParameters.
+ *
+ * Only accepts required settings needed to create a SAS. For optional settings please
+ * set corresponding properties directly, such as permissions, startsOn.
+ *
+ * WARNING: identifier will be ignored, permissions and expiresOn are required.
+ *
+ * @param blobSASSignatureValues -
+ * @param userDelegationKeyCredential -
+ */
+function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {
+    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);
+    // Stored access policies are not supported for a user delegation SAS.
+    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
+        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
+    }
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
+    if (blobSASSignatureValues.blobName) {
+        resource = "b";
+        if (blobSASSignatureValues.snapshotTime) {
+            resource = "bs";
+        }
+        else if (blobSASSignatureValues.versionId) {
+            resource = "bv";
+            timestamp = blobSASSignatureValues.versionId;
+        }
+    }
+    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
+    let verifiedPermissions;
+    if (blobSASSignatureValues.permissions) {
+        if (blobSASSignatureValues.blobName) {
+            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+        else {
+            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
+        }
+    }
+    // Signature is generated on the un-url-encoded values.
+    const stringToSign = [
+        verifiedPermissions ? verifiedPermissions : "",
+        blobSASSignatureValues.startsOn
+            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
+            : "",
+        blobSASSignatureValues.expiresOn
+            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
+            : "",
+        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
+        userDelegationKeyCredential.userDelegationKey.signedObjectId,
+        userDelegationKeyCredential.userDelegationKey.signedTenantId,
+        userDelegationKeyCredential.userDelegationKey.signedStartsOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
+            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
+            : "",
+        userDelegationKeyCredential.userDelegationKey.signedService,
+        userDelegationKeyCredential.userDelegationKey.signedVersion,
+        blobSASSignatureValues.preauthorizedAgentObjectId,
+        undefined,
+        blobSASSignatureValues.correlationId,
+        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
+        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
+        blobSASSignatureValues.version,
+        resource,
+        timestamp,
+        blobSASSignatureValues.cacheControl,
+        blobSASSignatureValues.contentDisposition,
+        blobSASSignatureValues.contentEncoding,
+        blobSASSignatureValues.contentLanguage,
+        blobSASSignatureValues.contentType
+    ].join("\n");
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);
+}
+function getCanonicalName(accountName, containerName, blobName) {
+    // Container: "/blob/account/containerName"
+    // Blob:      "/blob/account/containerName/blobName"
+    const elements = [`/blob/${accountName}/${containerName}`];
+    if (blobName) {
+        elements.push(`/${blobName}`);
+    }
+    return elements.join("");
+}
+function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
+        throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
+    }
+    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
+        throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.");
+    }
+    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.");
+    }
+    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
+        throw RangeError("Must provide 'blobName' when providing 'versionId'.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.setImmutabilityPolicy &&
+        version < "2020-08-04") {
+        throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.deleteVersion &&
+        version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.");
+    }
+    if (blobSASSignatureValues.permissions &&
+        blobSASSignatureValues.permissions.tag &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.");
+    }
+    if (version < "2020-02-10" &&
+        blobSASSignatureValues.permissions &&
+        (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {
+        throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.");
+    }
+    if (version < "2020-02-10" &&
+        (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {
+        throw RangeError("'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.");
+    }
+    blobSASSignatureValues.version = version;
+    return blobSASSignatureValues;
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
+ */
+class BlobLeaseClient {
+    /**
+     * Creates an instance of BlobLeaseClient.
+     * @param client - The client to make the lease operation requests.
+     * @param leaseId - Initial proposed lease id.
+     */
+    constructor(client, leaseId) {
+        const clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
+        this._url = client.url;
+        if (client.name === undefined) {
+            this._isContainer = true;
+            this._containerOrBlobOperation = new Container(clientContext);
+        }
+        else {
+            this._isContainer = false;
+            this._containerOrBlobOperation = new Blob$1(clientContext);
+        }
+        if (!leaseId) {
+            leaseId = coreHttp.generateUuid();
+        }
+        this._leaseId = leaseId;
+    }
+    /**
+     * Gets the lease Id.
+     *
+     * @readonly
+     */
+    get leaseId() {
+        return this._leaseId;
+    }
+    /**
+     * Gets the url.
+     *
+     * @readonly
+     */
+    get url() {
+        return this._url;
+    }
+    /**
+     * Establishes and manages a lock on a container for delete operations, or on a blob
+     * for write and delete operations.
+     * The lock duration can be 15 to 60 seconds, or can be infinite.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param duration - Must be between 15 to 60 seconds, or infinite (-1)
+     * @param options - option to configure lease management operations.
+     * @returns Response data for acquire lease operation.
+     */
+    async acquireLease(duration, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-acquireLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.acquireLease(Object.assign({ abortSignal: options.abortSignal, duration, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To change the ID of the lease.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param proposedLeaseId - the proposed new lease Id.
+     * @param options - option to configure lease management operations.
+     * @returns Response data for change lease operation.
+     */
+    async changeLease(proposedLeaseId, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-changeLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const response = await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            this._leaseId = proposedLeaseId;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To free the lease if it is no longer needed so that another client may
+     * immediately acquire a lease against the container or the blob.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param options - option to configure lease management operations.
+     * @returns Response data for release lease operation.
+     */
+    async releaseLease(options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-releaseLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.releaseLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To renew the lease.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param options - Optional option to configure lease management operations.
+     * @returns Response data for renew lease operation.
+     */
+    async renewLease(options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-renewLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.renewLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * To end the lease but ensure that another client cannot acquire a new lease
+     * until the current lease period has expired.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
+     * and
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
+     *
+     * @param breakPeriod - Break period
+     * @param options - Optional options to configure lease management operations.
+     * @returns Response data for break lease operation.
+     */
+    async breakLease(breakPeriod, options = {}) {
+        var _a, _b, _c, _d, _e, _f;
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-breakLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const operationOptions = Object.assign({ abortSignal: options.abortSignal, breakPeriod, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
+            return await this._containerOrBlobOperation.breakLease(operationOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
+ */
+class RetriableReadableStream extends stream.Readable {
+    /**
+     * Creates an instance of RetriableReadableStream.
+     *
+     * @param source - The current ReadableStream returned from getter
+     * @param getter - A method calling downloading request returning
+     *                                      a new ReadableStream from specified offset
+     * @param offset - Offset position in original data source to read
+     * @param count - How much data in original data source to read
+     * @param options -
+     */
+    constructor(source, getter, offset, count, options = {}) {
+        super({ highWaterMark: options.highWaterMark });
+        this.retries = 0;
+        this.sourceDataHandler = (data) => {
+            if (this.options.doInjectErrorOnce) {
+                this.options.doInjectErrorOnce = undefined;
+                this.source.pause();
+                this.source.removeAllListeners("data");
+                this.source.emit("end");
+                return;
+            }
+            // console.log(
+            //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
+            // );
+            this.offset += data.length;
+            if (this.onProgress) {
+                this.onProgress({ loadedBytes: this.offset - this.start });
+            }
+            if (!this.push(data)) {
+                this.source.pause();
+            }
+        };
+        this.sourceErrorOrEndHandler = (err) => {
+            if (err && err.name === "AbortError") {
+                this.destroy(err);
+                return;
+            }
+            // console.log(
+            //   `Source stream emits end or error, offset: ${
+            //     this.offset
+            //   }, dest end : ${this.end}`
+            // );
+            this.removeSourceEventHandlers();
+            if (this.offset - 1 === this.end) {
+                this.push(null);
+            }
+            else if (this.offset <= this.end) {
+                // console.log(
+                //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
+                // );
+                if (this.retries < this.maxRetryRequests) {
+                    this.retries += 1;
+                    this.getter(this.offset)
+                        .then((newSource) => {
+                        this.source = newSource;
+                        this.setSourceEventHandlers();
+                        return;
+                    })
+                        .catch((error) => {
+                        this.destroy(error);
+                    });
+                }
+                else {
+                    this.destroy(new Error(`Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this
+                        .offset - 1}, data needed offset: ${this.end}, retries: ${this.retries}, max retries: ${this.maxRetryRequests}`));
+                }
+            }
+            else {
+                this.destroy(new Error(`Data corruption failure: Received more data than original request, data needed offset is ${this.end}, received offset: ${this.offset - 1}`));
+            }
+        };
+        this.getter = getter;
+        this.source = source;
+        this.start = offset;
+        this.offset = offset;
+        this.end = offset + count - 1;
+        this.maxRetryRequests =
+            options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
+        this.onProgress = options.onProgress;
+        this.options = options;
+        this.setSourceEventHandlers();
+    }
+    _read() {
+        this.source.resume();
+    }
+    setSourceEventHandlers() {
+        this.source.on("data", this.sourceDataHandler);
+        this.source.on("end", this.sourceErrorOrEndHandler);
+        this.source.on("error", this.sourceErrorOrEndHandler);
+    }
+    removeSourceEventHandlers() {
+        this.source.removeListener("data", this.sourceDataHandler);
+        this.source.removeListener("end", this.sourceErrorOrEndHandler);
+        this.source.removeListener("error", this.sourceErrorOrEndHandler);
+    }
+    _destroy(error, callback) {
+        // remove listener from source and release source
+        this.removeSourceEventHandlers();
+        this.source.destroy();
+        callback(error === null ? undefined : error);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * BlobDownloadResponse implements BlobDownloadResponseParsed interface, and in Node.js runtime it will
+ * automatically retry when internal read stream unexpected ends. (This kind of unexpected ends cannot
+ * trigger retries defined in pipeline retry policy.)
+ *
+ * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
+ * Readable stream.
+ */
+class BlobDownloadResponse {
+    /**
+     * Creates an instance of BlobDownloadResponse.
+     *
+     * @param originalResponse -
+     * @param getter -
+     * @param offset -
+     * @param count -
+     * @param options -
+     */
+    constructor(originalResponse, getter, offset, count, options = {}) {
+        this.originalResponse = originalResponse;
+        this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
+    }
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return this.originalResponse.copyCompletedOn;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The number of tags associated with the blob
+     *
+     * @readonly
+     */
+    get tagCount() {
+        return this.originalResponse.tagCount;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * Returns the UTC date and time generated by the service that indicates the time at which the blob was
+     * last read or written to.
+     *
+     * @readonly
+     */
+    get lastAccessed() {
+        return this.originalResponse.lastAccessed;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the Blob service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * Indicates the versionId of the downloaded blob version.
+     *
+     * @readonly
+     */
+    get versionId() {
+        return this.originalResponse.versionId;
+    }
+    /**
+     * Indicates whether version of this blob is a current version.
+     *
+     * @readonly
+     */
+    get isCurrentVersion() {
+        return this.originalResponse.isCurrentVersion;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * Object Replication Policy Id of the destination blob.
+     *
+     * @readonly
+     */
+    get objectReplicationDestinationPolicyId() {
+        return this.originalResponse.objectReplicationDestinationPolicyId;
+    }
+    /**
+     * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
+     *
+     * @readonly
+     */
+    get objectReplicationSourceProperties() {
+        return this.originalResponse.objectReplicationSourceProperties;
+    }
+    /**
+     * If this blob has been sealed.
+     *
+     * @readonly
+     */
+    get isSealed() {
+        return this.originalResponse.isSealed;
+    }
+    /**
+     * UTC date/time value generated by the service that indicates the time at which the blob immutability policy will expire.
+     *
+     * @readonly
+     */
+    get immutabilityPolicyExpiresOn() {
+        return this.originalResponse.immutabilityPolicyExpiresOn;
+    }
+    /**
+     * Indicates immutability policy mode.
+     *
+     * @readonly
+     */
+    get immutabilityPolicyMode() {
+        return this.originalResponse.immutabilityPolicyMode;
+    }
+    /**
+     * Indicates if a legal hold is present on the blob.
+     *
+     * @readonly
+     */
+    get legalHold() {
+        return this.originalResponse.legalHold;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get contentAsBlob() {
+        return this.originalResponse.blobBody;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will automatically retry when internal read stream unexpected ends.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const AVRO_SYNC_MARKER_SIZE = 16;
+const AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
+const AVRO_CODEC_KEY = "avro.codec";
+const AVRO_SCHEMA_KEY = "avro.schema";
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function arraysEqual(a, b) {
+    if (a === b)
+        return true;
+    if (a == null || b == null)
+        return false;
+    if (a.length != b.length)
+        return false;
+    for (let i = 0; i < a.length; ++i) {
+        if (a[i] !== b[i])
+            return false;
+    }
+    return true;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+class AvroParser {
+    /**
+     * Reads a fixed number of bytes from the stream.
+     *
+     * @param stream -
+     * @param length -
+     * @param options -
+     */
+    static async readFixedBytes(stream, length, options = {}) {
+        const bytes = await stream.read(length, { abortSignal: options.abortSignal });
+        if (bytes.length != length) {
+            throw new Error("Hit stream end.");
+        }
+        return bytes;
+    }
+    /**
+     * Reads a single byte from the stream.
+     *
+     * @param stream -
+     * @param options -
+     */
+    static async readByte(stream, options = {}) {
+        const buf = await AvroParser.readFixedBytes(stream, 1, options);
+        return buf[0];
+    }
+    // int and long are stored in variable-length zig-zag coding.
+    // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
+    // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
+    static async readZigZagLong(stream, options = {}) {
+        let zigZagEncoded = 0;
+        let significanceInBit = 0;
+        let byte, haveMoreByte, significanceInFloat;
+        do {
+            byte = await AvroParser.readByte(stream, options);
+            haveMoreByte = byte & 0x80;
+            zigZagEncoded |= (byte & 0x7f) << significanceInBit;
+            significanceInBit += 7;
+        } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
+        if (haveMoreByte) {
+            // Switch to float arithmetic
+            zigZagEncoded = zigZagEncoded;
+            significanceInFloat = 268435456; // 2 ** 28.
+            do {
+                byte = await AvroParser.readByte(stream, options);
+                zigZagEncoded += (byte & 0x7f) * significanceInFloat;
+                significanceInFloat *= 128; // 2 ** 7
+            } while (byte & 0x80);
+            const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
+            if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
+                throw new Error("Integer overflow.");
+            }
+            return res;
+        }
+        return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
+    }
+    static async readLong(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readInt(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readNull() {
+        return null;
+    }
+    static async readBoolean(stream, options = {}) {
+        const b = await AvroParser.readByte(stream, options);
+        if (b == 1) {
+            return true;
+        }
+        else if (b == 0) {
+            return false;
+        }
+        else {
+            throw new Error("Byte was not a boolean.");
+        }
+    }
+    static async readFloat(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat32(0, true); // littleEndian = true
+    }
+    static async readDouble(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat64(0, true); // littleEndian = true
+    }
+    static async readBytes(stream, options = {}) {
+        const size = await AvroParser.readLong(stream, options);
+        if (size < 0) {
+            throw new Error("Bytes size was negative.");
+        }
+        return await stream.read(size, { abortSignal: options.abortSignal });
+    }
+    static async readString(stream, options = {}) {
+        const u8arr = await AvroParser.readBytes(stream, options);
+        // polyfill TextDecoder to be backward compatible with older
+        // nodejs that doesn't expose TextDecoder as a global variable
+        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
+            global.TextDecoder = __webpack_require__(669).TextDecoder;
+        }
+        // FUTURE: need TextDecoder polyfill for IE
+        const utf8decoder = new TextDecoder();
+        return utf8decoder.decode(u8arr);
+    }
+    static async readMapPair(stream, readItemMethod, options = {}) {
+        const key = await AvroParser.readString(stream, options);
+        // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
+        const value = await readItemMethod(stream, options);
+        return { key, value };
+    }
+    static async readMap(stream, readItemMethod, options = {}) {
+        const readPairMethod = async (stream, options = {}) => {
+            return await AvroParser.readMapPair(stream, readItemMethod, options);
+        };
+        const pairs = await AvroParser.readArray(stream, readPairMethod, options);
+        const dict = {};
+        for (const pair of pairs) {
+            dict[pair.key] = pair.value;
+        }
+        return dict;
+    }
+    static async readArray(stream, readItemMethod, options = {}) {
+        const items = [];
+        for (let count = await AvroParser.readLong(stream, options); count != 0; count = await AvroParser.readLong(stream, options)) {
+            if (count < 0) {
+                // Ignore block sizes
+                await AvroParser.readLong(stream, options);
+                count = -count;
+            }
+            while (count--) {
+                const item = await readItemMethod(stream, options);
+                items.push(item);
+            }
+        }
+        return items;
+    }
+}
+var AvroComplex;
+(function (AvroComplex) {
+    AvroComplex["RECORD"] = "record";
+    AvroComplex["ENUM"] = "enum";
+    AvroComplex["ARRAY"] = "array";
+    AvroComplex["MAP"] = "map";
+    AvroComplex["UNION"] = "union";
+    AvroComplex["FIXED"] = "fixed";
+})(AvroComplex || (AvroComplex = {}));
+class AvroType {
+    /**
+     * Determines the AvroType from the Avro Schema.
+     */
+    static fromSchema(schema) {
+        if (typeof schema === "string") {
+            return AvroType.fromStringSchema(schema);
+        }
+        else if (Array.isArray(schema)) {
+            return AvroType.fromArraySchema(schema);
+        }
+        else {
+            return AvroType.fromObjectSchema(schema);
+        }
+    }
+    static fromStringSchema(schema) {
+        switch (schema) {
+            case AvroPrimitive.NULL:
+            case AvroPrimitive.BOOLEAN:
+            case AvroPrimitive.INT:
+            case AvroPrimitive.LONG:
+            case AvroPrimitive.FLOAT:
+            case AvroPrimitive.DOUBLE:
+            case AvroPrimitive.BYTES:
+            case AvroPrimitive.STRING:
+                return new AvroPrimitiveType(schema);
+            default:
+                throw new Error(`Unexpected Avro type ${schema}`);
+        }
+    }
+    static fromArraySchema(schema) {
+        return new AvroUnionType(schema.map(AvroType.fromSchema));
+    }
+    static fromObjectSchema(schema) {
+        const type = schema.type;
+        // Primitives can be defined as strings or objects
+        try {
+            return AvroType.fromStringSchema(type);
+        }
+        catch (err) { }
+        switch (type) {
+            case AvroComplex.RECORD:
+                if (schema.aliases) {
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
+                }
+                if (!schema.name) {
+                    throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
+                }
+                const fields = {};
+                if (!schema.fields) {
+                    throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
+                }
+                for (const field of schema.fields) {
+                    fields[field.name] = AvroType.fromSchema(field.type);
+                }
+                return new AvroRecordType(fields, schema.name);
+            case AvroComplex.ENUM:
+                if (schema.aliases) {
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
+                }
+                if (!schema.symbols) {
+                    throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
+                }
+                return new AvroEnumType(schema.symbols);
+            case AvroComplex.MAP:
+                if (!schema.values) {
+                    throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
+                }
+                return new AvroMapType(AvroType.fromSchema(schema.values));
+            case AvroComplex.ARRAY: // Unused today
+            case AvroComplex.FIXED: // Unused today
+            default:
+                throw new Error(`Unexpected Avro type ${type} in ${schema}`);
+        }
+    }
+}
+var AvroPrimitive;
+(function (AvroPrimitive) {
+    AvroPrimitive["NULL"] = "null";
+    AvroPrimitive["BOOLEAN"] = "boolean";
+    AvroPrimitive["INT"] = "int";
+    AvroPrimitive["LONG"] = "long";
+    AvroPrimitive["FLOAT"] = "float";
+    AvroPrimitive["DOUBLE"] = "double";
+    AvroPrimitive["BYTES"] = "bytes";
+    AvroPrimitive["STRING"] = "string";
+})(AvroPrimitive || (AvroPrimitive = {}));
+class AvroPrimitiveType extends AvroType {
+    constructor(primitive) {
+        super();
+        this._primitive = primitive;
+    }
+    async read(stream, options = {}) {
+        switch (this._primitive) {
+            case AvroPrimitive.NULL:
+                return await AvroParser.readNull();
+            case AvroPrimitive.BOOLEAN:
+                return await AvroParser.readBoolean(stream, options);
+            case AvroPrimitive.INT:
+                return await AvroParser.readInt(stream, options);
+            case AvroPrimitive.LONG:
+                return await AvroParser.readLong(stream, options);
+            case AvroPrimitive.FLOAT:
+                return await AvroParser.readFloat(stream, options);
+            case AvroPrimitive.DOUBLE:
+                return await AvroParser.readDouble(stream, options);
+            case AvroPrimitive.BYTES:
+                return await AvroParser.readBytes(stream, options);
+            case AvroPrimitive.STRING:
+                return await AvroParser.readString(stream, options);
+            default:
+                throw new Error("Unknown Avro Primitive");
+        }
+    }
+}
+class AvroEnumType extends AvroType {
+    constructor(symbols) {
+        super();
+        this._symbols = symbols;
+    }
+    async read(stream, options = {}) {
+        const value = await AvroParser.readInt(stream, options);
+        return this._symbols[value];
+    }
+}
+class AvroUnionType extends AvroType {
+    constructor(types) {
+        super();
+        this._types = types;
+    }
+    async read(stream, options = {}) {
+        const typeIndex = await AvroParser.readInt(stream, options);
+        return await this._types[typeIndex].read(stream, options);
+    }
+}
+class AvroMapType extends AvroType {
+    constructor(itemType) {
+        super();
+        this._itemType = itemType;
+    }
+    async read(stream, options = {}) {
+        const readItemMethod = async (s, options) => {
+            return await this._itemType.read(s, options);
+        };
+        return await AvroParser.readMap(stream, readItemMethod, options);
+    }
+}
+class AvroRecordType extends AvroType {
+    constructor(fields, name) {
+        super();
+        this._fields = fields;
+        this._name = name;
+    }
+    async read(stream, options = {}) {
+        const record = {};
+        record["$schema"] = this._name;
+        for (const key in this._fields) {
+            if (this._fields.hasOwnProperty(key)) {
+                record[key] = await this._fields[key].read(stream, options);
+            }
+        }
+        return record;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+class AvroReader {
+    constructor(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
+        this._dataStream = dataStream;
+        this._headerStream = headerStream || dataStream;
+        this._initialized = false;
+        this._blockOffset = currentBlockOffset || 0;
+        this._objectIndex = indexWithinCurrentBlock || 0;
+        this._initialBlockOffset = currentBlockOffset || 0;
+    }
+    get blockOffset() {
+        return this._blockOffset;
+    }
+    get objectIndex() {
+        return this._objectIndex;
+    }
+    async initialize(options = {}) {
+        const header = await AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
+            abortSignal: options.abortSignal
+        });
+        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
+            throw new Error("Stream is not an Avro file.");
+        }
+        // File metadata is written as if defined by the following map schema:
+        // { "type": "map", "values": "bytes"}
+        this._metadata = await AvroParser.readMap(this._headerStream, AvroParser.readString, {
+            abortSignal: options.abortSignal
+        });
+        // Validate codec
+        const codec = this._metadata[AVRO_CODEC_KEY];
+        if (!(codec == undefined || codec == "null")) {
+            throw new Error("Codecs are not supported");
+        }
+        // The 16-byte, randomly-generated sync marker for this file.
+        this._syncMarker = await AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
+            abortSignal: options.abortSignal
+        });
+        // Parse the schema
+        const schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
+        this._itemType = AvroType.fromSchema(schema);
+        if (this._blockOffset == 0) {
+            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+        }
+        this._itemsRemainingInBlock = await AvroParser.readLong(this._dataStream, {
+            abortSignal: options.abortSignal
+        });
+        // skip block length
+        await AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal });
+        this._initialized = true;
+        if (this._objectIndex && this._objectIndex > 0) {
+            for (let i = 0; i < this._objectIndex; i++) {
+                await this._itemType.read(this._dataStream, { abortSignal: options.abortSignal });
+                this._itemsRemainingInBlock--;
+            }
+        }
+    }
+    hasNext() {
+        return !this._initialized || this._itemsRemainingInBlock > 0;
+    }
+    parseObjects(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* parseObjects_1() {
+            if (!this._initialized) {
+                yield tslib.__await(this.initialize(options));
+            }
+            while (this.hasNext()) {
+                const result = yield tslib.__await(this._itemType.read(this._dataStream, {
+                    abortSignal: options.abortSignal
+                }));
+                this._itemsRemainingInBlock--;
+                this._objectIndex++;
+                if (this._itemsRemainingInBlock == 0) {
+                    const marker = yield tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
+                        abortSignal: options.abortSignal
+                    }));
+                    this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+                    this._objectIndex = 0;
+                    if (!arraysEqual(this._syncMarker, marker)) {
+                        throw new Error("Stream is not a valid Avro file.");
+                    }
+                    try {
+                        this._itemsRemainingInBlock = yield tslib.__await(AvroParser.readLong(this._dataStream, {
+                            abortSignal: options.abortSignal
+                        }));
+                    }
+                    catch (err) {
+                        // We hit the end of the stream.
+                        this._itemsRemainingInBlock = 0;
+                    }
+                    if (this._itemsRemainingInBlock > 0) {
+                        // Ignore block size
+                        yield tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }));
+                    }
+                }
+                yield yield tslib.__await(result);
+            }
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+class AvroReadable {
+}
+
+// Copyright (c) Microsoft Corporation.
+const ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
+class AvroReadableFromStream extends AvroReadable {
+    constructor(readable) {
+        super();
+        this._readable = readable;
+        this._position = 0;
+    }
+    toUint8Array(data) {
+        if (typeof data === "string") {
+            return Buffer.from(data);
+        }
+        return data;
+    }
+    get position() {
+        return this._position;
+    }
+    async read(size, options = {}) {
+        var _a;
+        if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+            throw ABORT_ERROR;
+        }
+        if (size < 0) {
+            throw new Error(`size parameter should be positive: ${size}`);
+        }
+        if (size === 0) {
+            return new Uint8Array();
+        }
+        if (!this._readable.readable) {
+            throw new Error("Stream no longer readable.");
+        }
+        // See if there is already enough data.
+        const chunk = this._readable.read(size);
+        if (chunk) {
+            this._position += chunk.length;
+            // chunk.length maybe less than desired size if the stream ends.
+            return this.toUint8Array(chunk);
+        }
+        else {
+            // register callback to wait for enough data to read
+            return new Promise((resolve, reject) => {
+                const cleanUp = () => {
+                    this._readable.removeListener("readable", readableCallback);
+                    this._readable.removeListener("error", rejectCallback);
+                    this._readable.removeListener("end", rejectCallback);
+                    this._readable.removeListener("close", rejectCallback);
+                    if (options.abortSignal) {
+                        options.abortSignal.removeEventListener("abort", abortHandler);
+                    }
+                };
+                const readableCallback = () => {
+                    const chunk = this._readable.read(size);
+                    if (chunk) {
+                        this._position += chunk.length;
+                        cleanUp();
+                        // chunk.length maybe less than desired size if the stream ends.
+                        resolve(this.toUint8Array(chunk));
+                    }
+                };
+                const rejectCallback = () => {
+                    cleanUp();
+                    reject();
+                };
+                const abortHandler = () => {
+                    cleanUp();
+                    reject(ABORT_ERROR);
+                };
+                this._readable.on("readable", readableCallback);
+                this._readable.once("error", rejectCallback);
+                this._readable.once("end", rejectCallback);
+                this._readable.once("close", rejectCallback);
+                if (options.abortSignal) {
+                    options.abortSignal.addEventListener("abort", abortHandler);
+                }
+            });
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
+ */
+class BlobQuickQueryStream extends stream.Readable {
+    /**
+     * Creates an instance of BlobQuickQueryStream.
+     *
+     * @param source - The current ReadableStream returned from getter
+     * @param options -
+     */
+    constructor(source, options = {}) {
+        super();
+        this.avroPaused = true;
+        this.source = source;
+        this.onProgress = options.onProgress;
+        this.onError = options.onError;
+        this.avroReader = new AvroReader(new AvroReadableFromStream(this.source));
+        this.avroIter = this.avroReader.parseObjects({ abortSignal: options.abortSignal });
+    }
+    _read() {
+        if (this.avroPaused) {
+            this.readInternal().catch((err) => {
+                this.emit("error", err);
+            });
+        }
+    }
+    async readInternal() {
+        this.avroPaused = false;
+        let avroNext;
+        do {
+            avroNext = await this.avroIter.next();
+            if (avroNext.done) {
+                break;
+            }
+            const obj = avroNext.value;
+            const schema = obj.$schema;
+            if (typeof schema !== "string") {
+                throw Error("Missing schema in avro record.");
+            }
+            switch (schema) {
+                case "com.microsoft.azure.storage.queryBlobContents.resultData":
+                    {
+                        const data = obj.data;
+                        if (data instanceof Uint8Array === false) {
+                            throw Error("Invalid data in avro result record.");
+                        }
+                        if (!this.push(Buffer.from(data))) {
+                            this.avroPaused = true;
+                        }
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.progress":
+                    {
+                        const bytesScanned = obj.bytesScanned;
+                        if (typeof bytesScanned !== "number") {
+                            throw Error("Invalid bytesScanned in avro progress record.");
+                        }
+                        if (this.onProgress) {
+                            this.onProgress({ loadedBytes: bytesScanned });
+                        }
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.end":
+                    if (this.onProgress) {
+                        const totalBytes = obj.totalBytes;
+                        if (typeof totalBytes !== "number") {
+                            throw Error("Invalid totalBytes in avro end record.");
+                        }
+                        this.onProgress({ loadedBytes: totalBytes });
+                    }
+                    this.push(null);
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.error":
+                    if (this.onError) {
+                        const fatal = obj.fatal;
+                        if (typeof fatal !== "boolean") {
+                            throw Error("Invalid fatal in avro error record.");
+                        }
+                        const name = obj.name;
+                        if (typeof name !== "string") {
+                            throw Error("Invalid name in avro error record.");
+                        }
+                        const description = obj.description;
+                        if (typeof description !== "string") {
+                            throw Error("Invalid description in avro error record.");
+                        }
+                        const position = obj.position;
+                        if (typeof position !== "number") {
+                            throw Error("Invalid position in avro error record.");
+                        }
+                        this.onError({
+                            position,
+                            name,
+                            isFatal: fatal,
+                            description
+                        });
+                    }
+                    break;
+                default:
+                    throw Error(`Unknown schema ${schema} in avro progress record.`);
+            }
+        } while (!avroNext.done && !this.avroPaused);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
+ * parse avor data returned by blob query.
+ */
+class BlobQueryResponse {
+    /**
+     * Creates an instance of BlobQueryResponse.
+     *
+     * @param originalResponse -
+     * @param options -
+     */
+    constructor(originalResponse, options = {}) {
+        this.originalResponse = originalResponse;
+        this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
+    }
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return undefined;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the File service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get blobBody() {
+        return undefined;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will parse avor data returned by blob query.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
 (function (BlockBlobTier) {
     /**
      * Optimized for storing data that is accessed frequently.
@@ -24892,7 +27241,7 @@ var StorageClientContext = /** @class */ (function (_super) {
     PremiumPageBlobTier["P80"] = "P80";
 })(exports.PremiumPageBlobTier || (exports.PremiumPageBlobTier = {}));
 function toAccessTier(tier) {
-    if (tier == undefined) {
+    if (tier === undefined) {
         return undefined;
     }
     return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).
@@ -24906,167 +27255,137 @@ function ensureCpkIfSpecified(cpk, isHttps) {
     }
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Function that converts PageRange and ClearRange to a common Range object.
  * PageRange and ClearRange have start and end while Range offset and count
  * this function normalizes to Range.
- * @param response Model PageBlob Range response
+ * @param response - Model PageBlob Range response
  */
 function rangeResponseFromModel(response) {
-    var pageRange = (response._response.parsedBody.pageRange || []).map(function (x) { return ({
+    const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    var clearRange = (response._response.parsedBody.clearRange || []).map(function (x) { return ({
+    }));
+    const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    return tslib.__assign(tslib.__assign({}, response), { pageRange: pageRange,
-        clearRange: clearRange, _response: tslib.__assign(tslib.__assign({}, response._response), { parsedBody: {
-                pageRange: pageRange,
-                clearRange: clearRange
+    }));
+    return Object.assign(Object.assign({}, response), { pageRange,
+        clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {
+                pageRange,
+                clearRange
             } }) });
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This is the poller returned by {@link BlobClient.beginCopyFromURL}.
  * This can not be instantiated directly outside of this package.
  *
- * @ignore
+ * @hidden
  */
-var BlobBeginCopyFromUrlPoller = /** @class */ (function (_super) {
-    tslib.__extends(BlobBeginCopyFromUrlPoller, _super);
-    function BlobBeginCopyFromUrlPoller(options) {
-        var _this = this;
-        var blobClient = options.blobClient, copySource = options.copySource, _a = options.intervalInMs, intervalInMs = _a === void 0 ? 15000 : _a, onProgress = options.onProgress, resumeFrom = options.resumeFrom, startCopyFromURLOptions = options.startCopyFromURLOptions;
-        var state;
+class BlobBeginCopyFromUrlPoller extends coreLro.Poller {
+    constructor(options) {
+        const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions } = options;
+        let state;
         if (resumeFrom) {
             state = JSON.parse(resumeFrom).state;
         }
-        var operation = makeBlobBeginCopyFromURLPollOperation(tslib.__assign(tslib.__assign({}, state), { blobClient: blobClient,
-            copySource: copySource,
-            startCopyFromURLOptions: startCopyFromURLOptions }));
-        _this = _super.call(this, operation) || this;
+        const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,
+            copySource,
+            startCopyFromURLOptions }));
+        super(operation);
         if (typeof onProgress === "function") {
-            _this.onProgress(onProgress);
+            this.onProgress(onProgress);
         }
-        _this.intervalInMs = intervalInMs;
-        return _this;
+        this.intervalInMs = intervalInMs;
     }
-    BlobBeginCopyFromUrlPoller.prototype.delay = function () {
+    delay() {
         return coreHttp.delay(this.intervalInMs);
-    };
-    return BlobBeginCopyFromUrlPoller;
-}(coreLro.Poller));
+    }
+}
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var cancel = function cancel(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, copyId;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    copyId = state.copyId;
-                    if (state.isCompleted) {
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    if (!copyId) {
-                        state.isCancelled = true;
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    return [4 /*yield*/, state.blobClient.abortCopyFromURL(copyId, {
-                            abortSignal: options.abortSignal
-                        })];
-                case 1:
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    _a.sent();
-                    state.isCancelled = true;
-                    return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-            }
-        });
+const cancel = async function cancel(options = {}) {
+    const state = this.state;
+    const { copyId } = state;
+    if (state.isCompleted) {
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    if (!copyId) {
+        state.isCancelled = true;
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
+    await state.blobClient.abortCopyFromURL(copyId, {
+        abortSignal: options.abortSignal
     });
+    state.isCancelled = true;
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var update = function update(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, blobClient, copySource, startCopyFromURLOptions, result, result, copyStatus, copyProgress, prevCopyProgress, err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    blobClient = state.blobClient, copySource = state.copySource, startCopyFromURLOptions = state.startCopyFromURLOptions;
-                    if (!!state.isStarted) return [3 /*break*/, 2];
-                    state.isStarted = true;
-                    return [4 /*yield*/, blobClient.startCopyFromURL(copySource, startCopyFromURLOptions)];
-                case 1:
-                    result = _a.sent();
-                    // copyId is needed to abort
-                    state.copyId = result.copyId;
-                    if (result.copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 2:
-                    if (!!state.isCompleted) return [3 /*break*/, 6];
-                    _a.label = 3;
-                case 3:
-                    _a.trys.push([3, 5, , 6]);
-                    return [4 /*yield*/, state.blobClient.getProperties({ abortSignal: options.abortSignal })];
-                case 4:
-                    result = _a.sent();
-                    copyStatus = result.copyStatus, copyProgress = result.copyProgress;
-                    prevCopyProgress = state.copyProgress;
-                    if (copyProgress) {
-                        state.copyProgress = copyProgress;
-                    }
-                    if (copyStatus === "pending" &&
-                        copyProgress !== prevCopyProgress &&
-                        typeof options.fireProgress === "function") {
-                        // trigger in setTimeout, or swallow error?
-                        options.fireProgress(state);
-                    }
-                    else if (copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    else if (copyStatus === "failed") {
-                        state.error = new Error("Blob copy failed with reason: \"" + (result.copyStatusDescription || "unknown") + "\"");
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 5:
-                    err_1 = _a.sent();
-                    state.error = err_1;
-                    state.isCompleted = true;
-                    return [3 /*break*/, 6];
-                case 6: return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
+const update = async function update(options = {}) {
+    const state = this.state;
+    const { blobClient, copySource, startCopyFromURLOptions } = state;
+    if (!state.isStarted) {
+        state.isStarted = true;
+        const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);
+        // copyId is needed to abort
+        state.copyId = result.copyId;
+        if (result.copyStatus === "success") {
+            state.result = result;
+            state.isCompleted = true;
+        }
+    }
+    else if (!state.isCompleted) {
+        try {
+            const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });
+            const { copyStatus, copyProgress } = result;
+            const prevCopyProgress = state.copyProgress;
+            if (copyProgress) {
+                state.copyProgress = copyProgress;
             }
-        });
-    });
+            if (copyStatus === "pending" &&
+                copyProgress !== prevCopyProgress &&
+                typeof options.fireProgress === "function") {
+                // trigger in setTimeout, or swallow error?
+                options.fireProgress(state);
+            }
+            else if (copyStatus === "success") {
+                state.result = result;
+                state.isCompleted = true;
+            }
+            else if (copyStatus === "failed") {
+                state.error = new Error(`Blob copy failed with reason: "${result.copyStatusDescription || "unknown"}"`);
+                state.isCompleted = true;
+            }
+        }
+        catch (err) {
+            state.error = err;
+            state.isCompleted = true;
+        }
+    }
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
- * @ignore
+ * @hidden
  */
-var toString = function toString() {
-    return JSON.stringify({ state: this.state }, function (key, value) {
+const toString = function toString() {
+    return JSON.stringify({ state: this.state }, (key, value) => {
         // remove blobClient from serialized state since a client can't be hydrated from this info.
         if (key === "blobClient") {
             return undefined;
@@ -25076,83 +27395,41 @@ var toString = function toString() {
 };
 /**
  * Creates a poll operation given the provided state.
- * @ignore
+ * @hidden
  */
 function makeBlobBeginCopyFromURLPollOperation(state) {
     return {
-        state: tslib.__assign({}, state),
-        cancel: cancel,
-        toString: toString,
-        update: update
+        state: Object.assign({}, state),
+        cancel,
+        toString,
+        update
     };
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Generate a range string. For example:
  *
  * "bytes=255-" or "bytes=0-511"
  *
- * @export
- * @param {Range} iRange
- * @returns {string}
+ * @param iRange -
  */
 function rangeToString(iRange) {
     if (iRange.offset < 0) {
-        throw new RangeError("Range.offset cannot be smaller than 0.");
+        throw new RangeError(`Range.offset cannot be smaller than 0.`);
     }
     if (iRange.count && iRange.count <= 0) {
-        throw new RangeError("Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");
+        throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);
     }
     return iRange.count
-        ? "bytes=" + iRange.offset + "-" + (iRange.offset + iRange.count - 1)
-        : "bytes=" + iRange.offset + "-";
+        ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`
+        : `bytes=${iRange.offset}-`;
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
- * and etc.
- *
- * @export
- * @class StorageClient
- */
-var StorageClient = /** @class */ (function () {
-    /**
-     * Creates an instance of StorageClient.
-     * @param {string} url url to resource
-     * @param {Pipeline} pipeline request policy pipeline.
-     * @memberof StorageClient
-     */
-    function StorageClient(url, pipeline) {
-        // URL should be encoded and only once, protocol layer shouldn't encode URL again
-        this.url = escapeURLPath(url);
-        this.accountName = getAccountNameFromUrl(url);
-        this.pipeline = pipeline;
-        this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
-        this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
-        this.credential = new AnonymousCredential();
-        for (var _i = 0, _a = this.pipeline.factories; _i < _a.length; _i++) {
-            var factory = _a[_i];
-            if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
-                factory instanceof AnonymousCredential ||
-                coreHttp.isTokenCredential(factory)) {
-                this.credential = factory;
-            }
-        }
-        // Override protocol layer's default content-type
-        var storageClientContext = this.storageClientContext;
-        storageClientContext.requestContentType = undefined;
-    }
-    return StorageClient;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * States for Batch.
- *
- * @enum {number}
  */
 var BatchStates;
 (function (BatchStates) {
@@ -25163,57 +27440,32 @@ var BatchStates;
  * Batch provides basic parallel execution with concurrency limits.
  * Will stop execute left operations when one of the executed operation throws an error.
  * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.
- *
- * @export
- * @class Batch
  */
-var Batch = /** @class */ (function () {
+class Batch {
     /**
      * Creates an instance of Batch.
-     * @param {number} [concurrency=5]
-     * @memberof Batch
+     * @param concurrency -
      */
-    function Batch(concurrency) {
-        if (concurrency === void 0) { concurrency = 5; }
+    constructor(concurrency = 5) {
         /**
          * Number of active operations under execution.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.actives = 0;
         /**
          * Number of completed operations under execution.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.completed = 0;
         /**
          * Offset of next operation to be executed.
-         *
-         * @private
-         * @type {number}
-         * @memberof Batch
          */
         this.offset = 0;
         /**
          * Operation array to be executed.
-         *
-         * @private
-         * @type {Operation[]}
-         * @memberof Batch
          */
         this.operations = [];
         /**
          * States of Batch. When an error happens, state will turn into error.
          * Batch will stop execute left operations.
-         *
-         * @private
-         * @type {BatchStates}
-         * @memberof Batch
          */
         this.state = BatchStates.Good;
         if (concurrency < 1) {
@@ -25225,80 +27477,55 @@ var Batch = /** @class */ (function () {
     /**
      * Add a operation into queue.
      *
-     * @param {Operation} operation
-     * @memberof Batch
+     * @param operation -
      */
-    Batch.prototype.addOperation = function (operation) {
-        var _this = this;
-        this.operations.push(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-            var error_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        _a.trys.push([0, 2, , 3]);
-                        this.actives++;
-                        return [4 /*yield*/, operation()];
-                    case 1:
-                        _a.sent();
-                        this.actives--;
-                        this.completed++;
-                        this.parallelExecute();
-                        return [3 /*break*/, 3];
-                    case 2:
-                        error_1 = _a.sent();
-                        this.emitter.emit("error", error_1);
-                        return [3 /*break*/, 3];
-                    case 3: return [2 /*return*/];
-                }
-            });
-        }); });
-    };
+    addOperation(operation) {
+        this.operations.push(async () => {
+            try {
+                this.actives++;
+                await operation();
+                this.actives--;
+                this.completed++;
+                this.parallelExecute();
+            }
+            catch (error) {
+                this.emitter.emit("error", error);
+            }
+        });
+    }
     /**
      * Start execute operations in the queue.
      *
-     * @returns {Promise<void>}
-     * @memberof Batch
      */
-    Batch.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                if (this.operations.length === 0) {
-                    return [2 /*return*/, Promise.resolve()];
-                }
-                this.parallelExecute();
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.emitter.on("finish", resolve);
-                        _this.emitter.on("error", function (error) {
-                            _this.state = BatchStates.Error;
-                            reject(error);
-                        });
-                    })];
+    async do() {
+        if (this.operations.length === 0) {
+            return Promise.resolve();
+        }
+        this.parallelExecute();
+        return new Promise((resolve, reject) => {
+            this.emitter.on("finish", resolve);
+            this.emitter.on("error", (error) => {
+                this.state = BatchStates.Error;
+                reject(error);
             });
         });
-    };
+    }
     /**
      * Get next operation to be executed. Return null when reaching ends.
      *
-     * @private
-     * @returns {(Operation | null)}
-     * @memberof Batch
      */
-    Batch.prototype.nextOperation = function () {
+    nextOperation() {
         if (this.offset < this.operations.length) {
             return this.operations[this.offset++];
         }
         return null;
-    };
+    }
     /**
      * Start execute operations. One one the most important difference between
      * this method with do() is that do() wraps as an sync method.
      *
-     * @private
-     * @returns {void}
-     * @memberof Batch
      */
-    Batch.prototype.parallelExecute = function () {
+    parallelExecute() {
         if (this.state === BatchStates.Error) {
             return;
         }
@@ -25307,7 +27534,7 @@ var Batch = /** @class */ (function () {
             return;
         }
         while (this.actives < this.concurrency) {
-            var operation = this.nextOperation();
+            const operation = this.nextOperation();
             if (operation) {
                 operation();
             }
@@ -25315,68 +27542,59 @@ var Batch = /** @class */ (function () {
                 return;
             }
         }
-    };
-    return Batch;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This class generates a readable stream from the data in an array of buffers.
- *
- * @export
- * @class BuffersStream
  */
-var BuffersStream = /** @class */ (function (_super) {
-    tslib.__extends(BuffersStream, _super);
+class BuffersStream extends stream.Readable {
     /**
      * Creates an instance of BuffersStream that will emit the data
      * contained in the array of buffers.
      *
-     * @param {Buffer[]} buffers Array of buffers containing the data
-     * @param {number} byteLength The total length of data contained in the buffers
-     * @memberof BuffersStream
+     * @param buffers - Array of buffers containing the data
+     * @param byteLength - The total length of data contained in the buffers
      */
-    function BuffersStream(buffers, byteLength, options) {
-        var _this = _super.call(this, options) || this;
-        _this.buffers = buffers;
-        _this.byteLength = byteLength;
-        _this.byteOffsetInCurrentBuffer = 0;
-        _this.bufferIndex = 0;
-        _this.pushedBytesLength = 0;
+    constructor(buffers, byteLength, options) {
+        super(options);
+        this.buffers = buffers;
+        this.byteLength = byteLength;
+        this.byteOffsetInCurrentBuffer = 0;
+        this.bufferIndex = 0;
+        this.pushedBytesLength = 0;
         // check byteLength is no larger than buffers[] total length
-        var buffersLength = 0;
-        for (var _i = 0, _a = _this.buffers; _i < _a.length; _i++) {
-            var buf = _a[_i];
+        let buffersLength = 0;
+        for (const buf of this.buffers) {
             buffersLength += buf.byteLength;
         }
-        if (buffersLength < _this.byteLength) {
+        if (buffersLength < this.byteLength) {
             throw new Error("Data size shouldn't be larger than the total length of buffers.");
         }
-        return _this;
     }
     /**
      * Internal _read() that will be called when the stream wants to pull more data in.
      *
-     * @param {number} size Optional. The size of data to be read
-     * @memberof BuffersStream
+     * @param size - Optional. The size of data to be read
      */
-    BuffersStream.prototype._read = function (size) {
+    _read(size) {
         if (this.pushedBytesLength >= this.byteLength) {
             this.push(null);
         }
         if (!size) {
             size = this.readableHighWaterMark;
         }
-        var outBuffers = [];
-        var i = 0;
+        const outBuffers = [];
+        let i = 0;
         while (i < size && this.pushedBytesLength < this.byteLength) {
             // The last buffer may be longer than the data it contains.
-            var remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
-            var remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
-            var remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
+            const remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
+            const remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
+            const remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
             if (remaining > size - i) {
                 // chunkSize = size - i
-                var end = this.byteOffsetInCurrentBuffer + size - i;
+                const end = this.byteOffsetInCurrentBuffer + size - i;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 this.pushedBytesLength += size - i;
                 this.byteOffsetInCurrentBuffer = end;
@@ -25385,7 +27603,7 @@ var BuffersStream = /** @class */ (function (_super) {
             }
             else {
                 // chunkSize = remaining
-                var end = this.byteOffsetInCurrentBuffer + remaining;
+                const end = this.byteOffsetInCurrentBuffer + remaining;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 if (remaining === remainingCapacityInThisBuffer) {
                     // this.buffers[this.bufferIndex] used up, shift to next one
@@ -25405,16 +27623,15 @@ var BuffersStream = /** @class */ (function (_super) {
         else if (outBuffers.length === 1) {
             this.push(outBuffers[0]);
         }
-    };
-    return BuffersStream;
-}(stream.Readable));
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * maxBufferLength is max size of each buffer in the pooled buffers.
  */
 // Can't use import as Typescript doesn't recognize "buffer".
-var maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
+const maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
 /**
  * This class provides a buffer container which conceptually has no hard size limit.
  * It accepts a capacity, an array of input buffers and the total length of input data.
@@ -25422,27 +27639,20 @@ var maxBufferLength = __webpack_require__(293).constants.MAX_LENGTH;
  * into the internal "buffer" serially with respect to the total length.
  * Then by calling PooledBuffer.getReadableStream(), you can get a readable stream
  * assembled from all the data in the internal "buffer".
- *
- * @export
- * @class BufferScheduler
  */
-var PooledBuffer = /** @class */ (function () {
-    function PooledBuffer(capacity, buffers, totalLength) {
+class PooledBuffer {
+    constructor(capacity, buffers, totalLength) {
         /**
          * Internal buffers used to keep the data.
          * Each buffer has a length of the maxBufferLength except last one.
-         *
-         * @private
-         * @type {Buffer[]}
-         * @memberof PooledBuffer
          */
         this.buffers = [];
         this.capacity = capacity;
         this._size = 0;
         // allocate
-        var bufferNum = Math.ceil(capacity / maxBufferLength);
-        for (var i = 0; i < bufferNum; i++) {
-            var len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
+        const bufferNum = Math.ceil(capacity / maxBufferLength);
+        for (let i = 0; i < bufferNum; i++) {
+            let len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
             if (len === 0) {
                 len = maxBufferLength;
             }
@@ -25452,34 +27662,28 @@ var PooledBuffer = /** @class */ (function () {
             this.fill(buffers, totalLength);
         }
     }
-    Object.defineProperty(PooledBuffer.prototype, "size", {
-        /**
-         * The size of the data contained in the pooled buffers.
-         */
-        get: function () {
-            return this._size;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The size of the data contained in the pooled buffers.
+     */
+    get size() {
+        return this._size;
+    }
     /**
      * Fill the internal buffers with data in the input buffers serially
      * with respect to the total length and the total capacity of the internal buffers.
      * Data copied will be shift out of the input buffers.
      *
-     * @param {Buffer[]} buffers Input buffers containing the data to be filled in the pooled buffer
-     * @param {number} totalLength Total length of the data to be filled in.
+     * @param buffers - Input buffers containing the data to be filled in the pooled buffer
+     * @param totalLength - Total length of the data to be filled in.
      *
-     * @returns {void}
-     * @memberof PooledBuffer
      */
-    PooledBuffer.prototype.fill = function (buffers, totalLength) {
+    fill(buffers, totalLength) {
         this._size = Math.min(this.capacity, totalLength);
-        var i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
+        let i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
         while (totalCopiedNum < this._size) {
-            var source = buffers[i];
-            var target = this.buffers[j];
-            var copiedNum = source.copy(target, targetOffset, sourceOffset);
+            const source = buffers[i];
+            const target = this.buffers[j];
+            const copiedNum = source.copy(target, targetOffset, sourceOffset);
             totalCopiedNum += copiedNum;
             sourceOffset += copiedNum;
             targetOffset += copiedNum;
@@ -25497,20 +27701,17 @@ var PooledBuffer = /** @class */ (function () {
         if (buffers.length > 0) {
             buffers[0] = buffers[0].slice(sourceOffset);
         }
-    };
+    }
     /**
      * Get the readable stream assembled from all the data in the internal buffers.
      *
-     * @returns {Readable}
-     * @memberof PooledBuffer
      */
-    PooledBuffer.prototype.getReadableStream = function () {
+    getReadableStream() {
         return new BuffersStream(this.buffers, this.size);
-    };
-    return PooledBuffer;
-}());
+    }
+}
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation.
 /**
  * This class accepts a Node.js Readable stream as input, and keeps reading data
  * from the stream into the internal buffer structure, until it reaches maxBuffers.
@@ -25523,7 +27724,7 @@ var PooledBuffer = /** @class */ (function () {
  *
  * NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
  *
- * NUM_OF_ALL_BUFFERS <= maxBuffers
+ * NUM_OF_ALL_BUFFERS lesser than or equal to maxBuffers
  *
  * PERFORMANCE IMPROVEMENT TIPS:
  * 1. Input stream highWaterMark is better to set a same value with bufferSize
@@ -25532,70 +27733,43 @@ var PooledBuffer = /** @class */ (function () {
  *    reduce the possibility when a outgoing handler waits for the stream data.
  *    in this situation, outgoing handlers are blocked.
  *    Outgoing queue shouldn't be empty.
- * @export
- * @class BufferScheduler
  */
-var BufferScheduler = /** @class */ (function () {
+class BufferScheduler {
     /**
      * Creates an instance of BufferScheduler.
      *
-     * @param {Readable} readable A Node.js Readable stream
-     * @param {number} bufferSize Buffer size of every maintained buffer
-     * @param {number} maxBuffers How many buffers can be allocated
-     * @param {OutgoingHandler} outgoingHandler An async function scheduled to be
+     * @param readable - A Node.js Readable stream
+     * @param bufferSize - Buffer size of every maintained buffer
+     * @param maxBuffers - How many buffers can be allocated
+     * @param outgoingHandler - An async function scheduled to be
      *                                          triggered when a buffer fully filled
      *                                          with stream data
-     * @param {number} concurrency Concurrency of executing outgoingHandlers (>0)
-     * @param {string} [encoding] [Optional] Encoding of Readable stream when it's a string stream
-     * @memberof BufferScheduler
+     * @param concurrency - Concurrency of executing outgoingHandlers (>0)
+     * @param encoding - [Optional] Encoding of Readable stream when it's a string stream
      */
-    function BufferScheduler(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
+    constructor(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
         /**
          * An internal event emitter.
-         *
-         * @private
-         * @type {EventEmitter}
-         * @memberof BufferScheduler
          */
         this.emitter = new events.EventEmitter();
         /**
          * An internal offset marker to track data offset in bytes of next outgoingHandler.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.offset = 0;
         /**
          * An internal marker to track whether stream is end.
-         *
-         * @private
-         * @type {boolean}
-         * @memberof BufferScheduler
          */
         this.isStreamEnd = false;
         /**
          * An internal marker to track whether stream or outgoingHandler returns error.
-         *
-         * @private
-         * @type {boolean}
-         * @memberof BufferScheduler
          */
         this.isError = false;
         /**
          * How many handlers are executing.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.executingOutgoingHandlers = 0;
         /**
          * How many buffers have been allocated.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.numBuffers = 0;
         /**
@@ -25604,44 +27778,28 @@ var BufferScheduler = /** @class */ (function () {
          * data received from the stream, when data in unresolvedDataArray exceeds the
          * blockSize defined, it will try to concat a blockSize of buffer, fill into available
          * buffers from incoming and push to outgoing array.
-         *
-         * @private
-         * @type {Buffer[]}
-         * @memberof BufferScheduler
          */
         this.unresolvedDataArray = [];
         /**
          * How much data consisted in unresolvedDataArray.
-         *
-         * @private
-         * @type {number}
-         * @memberof BufferScheduler
          */
         this.unresolvedLength = 0;
         /**
          * The array includes all the available buffers can be used to fill data from stream.
-         *
-         * @private
-         * @type {PooledBuffer[]}
-         * @memberof BufferScheduler
          */
         this.incoming = [];
         /**
          * The array (queue) includes all the buffers filled from stream data.
-         *
-         * @private
-         * @type {PooledBuffer[]}
-         * @memberof BufferScheduler
          */
         this.outgoing = [];
         if (bufferSize <= 0) {
-            throw new RangeError("bufferSize must be larger than 0, current is " + bufferSize);
+            throw new RangeError(`bufferSize must be larger than 0, current is ${bufferSize}`);
         }
         if (maxBuffers <= 0) {
-            throw new RangeError("maxBuffers must be larger than 0, current is " + maxBuffers);
+            throw new RangeError(`maxBuffers must be larger than 0, current is ${maxBuffers}`);
         }
         if (concurrency <= 0) {
-            throw new RangeError("concurrency must be larger than 0, current is " + concurrency);
+            throw new RangeError(`concurrency must be larger than 0, current is ${concurrency}`);
         }
         this.bufferSize = bufferSize;
         this.maxBuffers = maxBuffers;
@@ -25654,77 +27812,65 @@ var BufferScheduler = /** @class */ (function () {
      * Start the scheduler, will return error when stream of any of the outgoingHandlers
      * returns error.
      *
-     * @returns {Promise<void>}
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.readable.on("data", function (data) {
-                            data = typeof data === "string" ? Buffer.from(data, _this.encoding) : data;
-                            _this.appendUnresolvedData(data);
-                            if (!_this.resolveData()) {
-                                _this.readable.pause();
-                            }
-                        });
-                        _this.readable.on("error", function (err) {
-                            _this.emitter.emit("error", err);
-                        });
-                        _this.readable.on("end", function () {
-                            _this.isStreamEnd = true;
-                            _this.emitter.emit("checkEnd");
-                        });
-                        _this.emitter.on("error", function (err) {
-                            _this.isError = true;
-                            _this.readable.pause();
-                            reject(err);
-                        });
-                        _this.emitter.on("checkEnd", function () {
-                            if (_this.outgoing.length > 0) {
-                                _this.triggerOutgoingHandlers();
-                                return;
-                            }
-                            if (_this.isStreamEnd && _this.executingOutgoingHandlers === 0) {
-                                if (_this.unresolvedLength > 0 && _this.unresolvedLength < _this.bufferSize) {
-                                    var buffer_1 = _this.shiftBufferFromUnresolvedDataArray();
-                                    _this.outgoingHandler(function () { return buffer_1.getReadableStream(); }, buffer_1.size, _this.offset)
-                                        .then(resolve)
-                                        .catch(reject);
-                                }
-                                else if (_this.unresolvedLength >= _this.bufferSize) {
-                                    return;
-                                }
-                                else {
-                                    resolve();
-                                }
-                            }
-                        });
-                    })];
+    async do() {
+        return new Promise((resolve, reject) => {
+            this.readable.on("data", (data) => {
+                data = typeof data === "string" ? Buffer.from(data, this.encoding) : data;
+                this.appendUnresolvedData(data);
+                if (!this.resolveData()) {
+                    this.readable.pause();
+                }
+            });
+            this.readable.on("error", (err) => {
+                this.emitter.emit("error", err);
+            });
+            this.readable.on("end", () => {
+                this.isStreamEnd = true;
+                this.emitter.emit("checkEnd");
+            });
+            this.emitter.on("error", (err) => {
+                this.isError = true;
+                this.readable.pause();
+                reject(err);
+            });
+            this.emitter.on("checkEnd", () => {
+                if (this.outgoing.length > 0) {
+                    this.triggerOutgoingHandlers();
+                    return;
+                }
+                if (this.isStreamEnd && this.executingOutgoingHandlers === 0) {
+                    if (this.unresolvedLength > 0 && this.unresolvedLength < this.bufferSize) {
+                        const buffer = this.shiftBufferFromUnresolvedDataArray();
+                        this.outgoingHandler(() => buffer.getReadableStream(), buffer.size, this.offset)
+                            .then(resolve)
+                            .catch(reject);
+                    }
+                    else if (this.unresolvedLength >= this.bufferSize) {
+                        return;
+                    }
+                    else {
+                        resolve();
+                    }
+                }
             });
         });
-    };
+    }
     /**
      * Insert a new data into unresolved array.
      *
-     * @private
-     * @param {Buffer} data
-     * @memberof BufferScheduler
+     * @param data -
      */
-    BufferScheduler.prototype.appendUnresolvedData = function (data) {
+    appendUnresolvedData(data) {
         this.unresolvedDataArray.push(data);
         this.unresolvedLength += data.length;
-    };
+    }
     /**
      * Try to shift a buffer with size in blockSize. The buffer returned may be less
      * than blockSize when data in unresolvedDataArray is less than bufferSize.
      *
-     * @private
-     * @returns {PooledBuffer}
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.shiftBufferFromUnresolvedDataArray = function (buffer) {
+    shiftBufferFromUnresolvedDataArray(buffer) {
         if (!buffer) {
             buffer = new PooledBuffer(this.bufferSize, this.unresolvedDataArray, this.unresolvedLength);
         }
@@ -25733,7 +27879,7 @@ var BufferScheduler = /** @class */ (function () {
         }
         this.unresolvedLength -= buffer.size;
         return buffer;
-    };
+    }
     /**
      * Resolve data in unresolvedDataArray. For every buffer with size in blockSize
      * shifted, it will try to get (or allocate a buffer) from incoming, and fill it,
@@ -25741,13 +27887,11 @@ var BufferScheduler = /** @class */ (function () {
      *
      * Return false when available buffers in incoming are not enough, else true.
      *
-     * @private
-     * @returns {boolean} Return false when buffers in incoming are not enough, else true.
-     * @memberof BufferScheduler
+     * @returns Return false when buffers in incoming are not enough, else true.
      */
-    BufferScheduler.prototype.resolveData = function () {
+    resolveData() {
         while (this.unresolvedLength >= this.bufferSize) {
-            var buffer = void 0;
+            let buffer;
             if (this.incoming.length > 0) {
                 buffer = this.incoming.shift();
                 this.shiftBufferFromUnresolvedDataArray(buffer);
@@ -25766,191 +27910,128 @@ var BufferScheduler = /** @class */ (function () {
             this.triggerOutgoingHandlers();
         }
         return true;
-    };
+    }
     /**
      * Try to trigger a outgoing handler for every buffer in outgoing. Stop when
      * concurrency reaches.
-     *
-     * @private
-     * @memberof BufferScheduler
      */
-    BufferScheduler.prototype.triggerOutgoingHandlers = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer;
-            return tslib.__generator(this, function (_a) {
-                do {
-                    if (this.executingOutgoingHandlers >= this.concurrency) {
-                        return [2 /*return*/];
-                    }
-                    buffer = this.outgoing.shift();
-                    if (buffer) {
-                        this.triggerOutgoingHandler(buffer);
-                    }
-                } while (buffer);
-                return [2 /*return*/];
-            });
-        });
-    };
+    async triggerOutgoingHandlers() {
+        let buffer;
+        do {
+            if (this.executingOutgoingHandlers >= this.concurrency) {
+                return;
+            }
+            buffer = this.outgoing.shift();
+            if (buffer) {
+                this.triggerOutgoingHandler(buffer);
+            }
+        } while (buffer);
+    }
     /**
      * Trigger a outgoing handler for a buffer shifted from outgoing.
      *
-     * @private
-     * @param {Buffer} buffer
-     * @returns {Promise<any>}
-     * @memberof BufferScheduler
+     * @param buffer -
      */
-    BufferScheduler.prototype.triggerOutgoingHandler = function (buffer) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bufferLength, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        bufferLength = buffer.size;
-                        this.executingOutgoingHandlers++;
-                        this.offset += bufferLength;
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        return [4 /*yield*/, this.outgoingHandler(function () { return buffer.getReadableStream(); }, bufferLength, this.offset - bufferLength)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        this.emitter.emit("error", err_1);
-                        return [2 /*return*/];
-                    case 4:
-                        this.executingOutgoingHandlers--;
-                        this.reuseBuffer(buffer);
-                        this.emitter.emit("checkEnd");
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async triggerOutgoingHandler(buffer) {
+        const bufferLength = buffer.size;
+        this.executingOutgoingHandlers++;
+        this.offset += bufferLength;
+        try {
+            await this.outgoingHandler(() => buffer.getReadableStream(), bufferLength, this.offset - bufferLength);
+        }
+        catch (err) {
+            this.emitter.emit("error", err);
+            return;
+        }
+        this.executingOutgoingHandlers--;
+        this.reuseBuffer(buffer);
+        this.emitter.emit("checkEnd");
+    }
     /**
      * Return buffer used by outgoing handler into incoming.
      *
-     * @private
-     * @param {Buffer} buffer
-     * @memberof BufferScheduler
+     * @param buffer -
      */
-    BufferScheduler.prototype.reuseBuffer = function (buffer) {
+    reuseBuffer(buffer) {
         this.incoming.push(buffer);
         if (!this.isError && this.resolveData() && !this.isStreamEnd) {
             this.readable.resume();
         }
-    };
-    return BufferScheduler;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-/**
- * Creates a span using the global tracer.
- * @param name The name of the operation being performed.
- * @param tracingOptions The options for the underlying http request.
- */
-function createSpan(operationName, tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
-    var tracer = coreTracing.getTracer();
-    var spanOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { kind: api.SpanKind.INTERNAL });
-    var span = tracer.startSpan("Azure.Storage.Blob." + operationName, spanOptions);
-    span.setAttribute("az.namespace", "Microsoft.Storage");
-    var newOptions = tracingOptions.spanOptions || {};
-    if (span.isRecording()) {
-        newOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { parent: span.context(), attributes: tslib.__assign(tslib.__assign({}, spanOptions.attributes), { "az.namespace": "Microsoft.Storage" }) });
-    }
-    return {
-        span: span,
-        spanOptions: newOptions
-    };
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
 /**
  * Reads a readable stream into buffer. Fill the buffer from offset to end.
  *
- * @export
- * @param {NodeJS.ReadableStream} stream A Node.js Readable stream
- * @param {Buffer} buffer Buffer to be filled, length must >= offset
- * @param {number} offset From which position in the buffer to be filled, inclusive
- * @param {number} end To which position in the buffer to be filled, exclusive
- * @param {string} [encoding] Encoding of the Readable stream
- * @returns {Promise<void>}
+ * @param stream - A Node.js Readable stream
+ * @param buffer - Buffer to be filled, length must greater than or equal to offset
+ * @param offset - From which position in the buffer to be filled, inclusive
+ * @param end - To which position in the buffer to be filled, exclusive
+ * @param encoding - Encoding of the Readable stream
  */
-function streamToBuffer(stream, buffer, offset, end, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, count;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            count = end - offset;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        if (pos >= count) {
-                            resolve();
-                            return;
-                        }
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        // How much data needed in this chunk
-                        var chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
-                        buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
-                        pos += chunkLength;
-                    });
-                    stream.on("end", function () {
-                        if (pos < count) {
-                            reject(new Error("Stream drains before getting enough data needed. Data read: " + pos + ", data need: " + count));
-                        }
-                        resolve();
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer(stream, buffer, offset, end, encoding) {
+    let pos = 0; // Position in stream
+    const count = end - offset; // Total amount of data needed in stream
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            if (pos >= count) {
+                resolve();
+                return;
+            }
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            // How much data needed in this chunk
+            const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
+            buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
+            pos += chunkLength;
         });
+        stream.on("end", () => {
+            if (pos < count) {
+                reject(new Error(`Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`));
+            }
+            resolve();
+        });
+        stream.on("error", reject);
     });
 }
 /**
  * Reads a readable stream into buffer entirely.
  *
- * @export
- * @param {NodeJS.ReadableStream} stream A Node.js Readable stream
- * @param {Buffer} buffer Buffer to be filled, length must >= offset
- * @param {string} [encoding] Encoding of the Readable stream
- * @returns {Promise<number>} with the count of bytes read.
- * @throws {RangeError} If buffer size is not big enough.
+ * @param stream - A Node.js Readable stream
+ * @param buffer - Buffer to be filled, length must greater than or equal to offset
+ * @param encoding - Encoding of the Readable stream
+ * @returns with the count of bytes read.
+ * @throws `RangeError` If buffer size is not big enough.
  */
-function streamToBuffer2(stream, buffer, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, bufferSize;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            bufferSize = buffer.length;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        if (pos + chunk.length > bufferSize) {
-                            reject(new Error("Stream exceeds buffer size. Buffer size: " + bufferSize));
-                            return;
-                        }
-                        buffer.fill(chunk, pos, pos + chunk.length);
-                        pos += chunk.length;
-                    });
-                    stream.on("end", function () {
-                        resolve(pos);
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer2(stream, buffer, encoding) {
+    let pos = 0; // Position in stream
+    const bufferSize = buffer.length;
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            if (pos + chunk.length > bufferSize) {
+                reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));
+                return;
+            }
+            buffer.fill(chunk, pos, pos + chunk.length);
+            pos += chunk.length;
         });
+        stream.on("end", () => {
+            resolve(pos);
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -25958,26 +28039,20 @@ function streamToBuffer2(stream, buffer, encoding) {
  *
  * Writes the content of a readstream to a local file. Returns a Promise which is completed after the file handle is closed.
  *
- * @export
- * @param {NodeJS.ReadableStream} rs The read stream.
- * @param {string} file Destination file path.
- * @returns {Promise<void>}
+ * @param rs - The read stream.
+ * @param file - Destination file path.
  */
-function readStreamToLocalFile(rs, file) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var ws = fs.createWriteStream(file);
-                    rs.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("close", resolve);
-                    rs.pipe(ws);
-                })];
+async function readStreamToLocalFile(rs, file) {
+    return new Promise((resolve, reject) => {
+        const ws = fs.createWriteStream(file);
+        rs.on("error", (err) => {
+            reject(err);
         });
+        ws.on("error", (err) => {
+            reject(err);
+        });
+        ws.on("close", resolve);
+        rs.pipe(ws);
     });
 }
 /**
@@ -25985,25 +28060,22 @@ function readStreamToLocalFile(rs, file) {
  *
  * Promisified version of fs.stat().
  */
-var fsStat = util.promisify(fs.stat);
-var fsCreateReadStream = fs.createReadStream;
+const fsStat = util.promisify(fs.stat);
+const fsCreateReadStream = fs.createReadStream;
 
 /**
  * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,
  * append blob, or page blob.
- *
- * @export
- * @class BlobClient
  */
-var BlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobClient, _super);
-    function BlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _a;
-        var _this = this;
+class BlobClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         options = options || {};
-        var pipeline;
-        var url;
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        let pipeline;
+        let url;
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -26028,12 +28100,12 @@ var BlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -26053,80 +28125,68 @@ var BlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        (_a = _this.getBlobAndContainerNamesFromUrl(), _this._name = _a.blobName, _this._containerName = _a.containerName);
-        _this.blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        ({
+            blobName: this._name,
+            containerName: this._containerName
+        } = this.getBlobAndContainerNamesFromUrl());
+        this.blobContext = new Blob$1(this.storageClientContext);
+        this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);
+        this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);
+    }
+    /**
+     * The name of the blob.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * The name of the storage container the blob is associated with.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(BlobClient.prototype, "name", {
-        /**
-         * The name of the blob.
-         */
-        get: function () {
-            return this._name;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobClient.prototype, "containerName", {
-        /**
-         * The name of the storage container the blob is associated with.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {BlobClient} A new BlobClient object identical to the source but with the specified snapshot timestamp
-     * @memberof BlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp
      */
-    BlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a new BlobClient object pointing to a version of this blob.
      * Provide "" will remove the versionId and return a Client to the base blob.
      *
-     * @param {string} versionId The versionId.
-     * @returns {BlobClient} A new BlobClient object pointing to the version of this blob.
-     * @memberof BlobClient
+     * @param versionId - The versionId.
+     * @returns A new BlobClient object pointing to the version of this blob.
      */
-    BlobClient.prototype.withVersion = function (versionId) {
+    withVersion(versionId) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);
-    };
+    }
     /**
      * Creates a AppendBlobClient object.
      *
-     * @returns {AppendBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getAppendBlobClient = function () {
+    getAppendBlobClient() {
         return new AppendBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a BlockBlobClient object.
      *
-     * @returns {BlockBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getBlockBlobClient = function () {
+    getBlockBlobClient() {
         return new BlockBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a PageBlobClient object.
      *
-     * @returns {PageBlobClient}
-     * @memberof BlobClient
      */
-    BlobClient.prototype.getPageBlobClient = function () {
+    getPageBlobClient() {
         return new PageBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Reads or downloads a blob from the system, including its metadata and properties.
      * You can also call Get Blob to read a snapshot.
@@ -26136,11 +28196,10 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob
      *
-     * @param {number} [offset] From which position of the blob to download, >= 0
-     * @param {number} [count] How much data to be downloaded, > 0. Will download to the end when undefined
-     * @param {BlobDownloadOptions} [options] Optional options to Blob Download operation.
-     * @returns {Promise<BlobDownloadResponseParsed>}
-     * @memberof BlobClient
+     * @param offset - From which position of the blob to download, greater than or equal to 0
+     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
+     * @param options - Optional options to Blob Download operation.
+     *
      *
      * Example usage (Node.js):
      *
@@ -26187,108 +28246,77 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      */
-    BlobClient.prototype.download = function (offset, count, options) {
+    async download(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res_1, wrappedRes, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlobClient-download", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.download({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress,
-                                range: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }),
-                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                snapshot: options.snapshot,
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res_1 = _c.sent();
-                        wrappedRes = tslib.__assign(tslib.__assign({}, res_1), { _response: res_1._response, objectReplicationDestinationPolicyId: res_1.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res_1.objectReplicationRules) });
-                        // We support retrying when download stream unexpected ends in Node.js runtime
-                        // Following code shouldn't be bundled into browser build, however some
-                        // bundlers may try to bundle following code and "FileReadResponse.ts".
-                        // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
-                        // The config is in package.json "browser" field
-                        if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
-                            // TODO: Default value or make it a required parameter?
-                            options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
-                        }
-                        if (res_1.contentLength === undefined) {
-                            throw new RangeError("File download response doesn't contain valid content length header");
-                        }
-                        if (!res_1.etag) {
-                            throw new RangeError("File download response doesn't contain valid etag header");
-                        }
-                        return [2 /*return*/, new BlobDownloadResponse(wrappedRes, function (start) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var updatedOptions;
-                                var _a;
-                                return tslib.__generator(this, function (_b) {
-                                    switch (_b.label) {
-                                        case 0:
-                                            updatedOptions = {
-                                                leaseAccessConditions: options.conditions,
-                                                modifiedAccessConditions: {
-                                                    ifMatch: options.conditions.ifMatch || res_1.etag,
-                                                    ifModifiedSince: options.conditions.ifModifiedSince,
-                                                    ifNoneMatch: options.conditions.ifNoneMatch,
-                                                    ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
-                                                    ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
-                                                },
-                                                range: rangeToString({
-                                                    count: offset + res_1.contentLength - start,
-                                                    offset: start
-                                                }),
-                                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                                snapshot: options.snapshot,
-                                                cpkInfo: options.customerProvidedKey
-                                            };
-                                            return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal }, updatedOptions))];
-                                        case 1: 
-                                        // Debug purpose only
-                                        // console.log(
-                                        //   `Read from internal stream, range: ${
-                                        //     updatedOptions.range
-                                        //   }, options: ${JSON.stringify(updatedOptions)}`
-                                        // );
-                                        return [2 /*return*/, (_b.sent()).readableStreamBody];
-                                    }
-                                });
-                            }); }, offset, res_1.contentLength, {
-                                abortSignal: options.abortSignal,
-                                maxRetryRequests: options.maxRetryRequests,
-                                onProgress: options.onProgress
-                            })];
-                    case 3:
-                        e_1 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.conditions = options.conditions || {};
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlobClient-download", options);
+        try {
+            const res = await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
+                }, range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+            // Return browser response immediately
+            if (false) {}
+            // We support retrying when download stream unexpected ends in Node.js runtime
+            // Following code shouldn't be bundled into browser build, however some
+            // bundlers may try to bundle following code and "FileReadResponse.ts".
+            // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
+            // The config is in package.json "browser" field
+            if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
+                // TODO: Default value or make it a required parameter?
+                options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
+            }
+            if (res.contentLength === undefined) {
+                throw new RangeError(`File download response doesn't contain valid content length header`);
+            }
+            if (!res.etag) {
+                throw new RangeError(`File download response doesn't contain valid etag header`);
+            }
+            return new BlobDownloadResponse(wrappedRes, async (start) => {
+                var _a;
+                const updatedDownloadOptions = {
+                    leaseAccessConditions: options.conditions,
+                    modifiedAccessConditions: {
+                        ifMatch: options.conditions.ifMatch || res.etag,
+                        ifModifiedSince: options.conditions.ifModifiedSince,
+                        ifNoneMatch: options.conditions.ifNoneMatch,
+                        ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
+                        ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
+                    },
+                    range: rangeToString({
+                        count: offset + res.contentLength - start,
+                        offset: start
+                    }),
+                    rangeGetContentMD5: options.rangeGetContentMD5,
+                    rangeGetContentCRC64: options.rangeGetContentCrc64,
+                    snapshot: options.snapshot,
+                    cpkInfo: options.customerProvidedKey
+                };
+                // Debug purpose only
+                // console.log(
+                //   `Read from internal stream, range: ${
+                //     updatedOptions.range
+                //   }, options: ${JSON.stringify(updatedOptions)}`
+                // );
+                return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedDownloadOptions))).readableStreamBody;
+            }, offset, res.contentLength, {
+                maxRetryRequests: options.maxRetryRequests,
+                onProgress: options.onProgress
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure blob resource represented by this client exists; false otherwise.
      *
@@ -26296,53 +28324,38 @@ var BlobClient = /** @class */ (function (_super) {
      * applications. Vice versa new blobs might be added by other clients or applications after this
      * function completes.
      *
-     * @param {BlobExistsOptions} [options] options to Exists operation.
-     * @returns {Promise<boolean>}
-     * @memberof BlobClient
+     * @param options - options to Exists operation.
      */
-    BlobClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-exists", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                customerProvidedKey: options.customerProvidedKey,
-                                conditions: options.conditions,
-                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_2 = _b.sent();
-                        if (e_2.statusCode === 404) {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when checking blob existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-exists", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                customerProvidedKey: options.customerProvidedKey,
+                conditions: options.conditions,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking blob existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns all user-defined metadata, standard HTTP properties, and system properties
      * for the blob. It does not return the content of the blob.
@@ -26353,49 +28366,28 @@ var BlobClient = /** @class */ (function (_super) {
      * the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which
      * will retain their original casing.
      *
-     * @param {BlobGetPropertiesOptions} [options] Optional options to Get Properties operation.
-     * @returns {Promise<BlobGetPropertiesResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Get Properties operation.
      */
-    BlobClient.prototype.getProperties = function (options) {
+    async getProperties(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res, e_3;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getProperties", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.getProperties({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res = _c.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) })];
-                    case 3:
-                        e_3 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getProperties", options);
+        try {
+            options.conditions = options.conditions || {};
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            const res = await this.blobContext.getProperties(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -26403,46 +28395,26 @@ var BlobClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {BlobDeleteOptions} [options] Optional options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.delete = function (options) {
+    async delete(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-delete", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.deleteMethod({
-                                abortSignal: options.abortSignal,
-                                deleteSnapshots: options.deleteSnapshots,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-delete", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.blobContext.delete(Object.assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -26450,90 +28422,58 @@ var BlobClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {BlobDeleteOptions} [options] Optional options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteIfExistsResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_5;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("BlobClient-deleteIfExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_5 = _d.sent();
-                        if (((_a = e_5.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when deleting a blob or snapshot only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_5.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_5.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a blob or snapshot only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restores the contents and metadata of soft deleted blob and any associated
      * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29
      * or later.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob
      *
-     * @param {BlobUndeleteOptions} [options] Optional options to Blob Undelete operation.
-     * @returns {Promise<BlobUndeleteResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Blob Undelete operation.
      */
-    BlobClient.prototype.undelete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-undelete", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.undelete({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undelete(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-undelete", options);
+        try {
+            return await this.blobContext.undelete(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets system properties on the blob.
      *
@@ -26541,51 +28481,33 @@ var BlobClient = /** @class */ (function (_super) {
      * these blob HTTP headers without a value will be cleared.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
      *
-     * @param {BlobHTTPHeaders} [blobHTTPHeaders] If no value provided, or no value provided for
+     * @param blobHTTPHeaders - If no value provided, or no value provided for
      *                                                   the specified blob HTTP headers, these blob HTTP
      *                                                   headers without a value will be cleared.
-     * @param {BlobSetHTTPHeadersOptions} [options] Optional options to Blob Set HTTP Headers operation.
-     * @returns {Promise<BlobSetHTTPHeadersResponse>}
-     * @memberof BlobClient
+     *                                                   A common header to set is `blobContentType`
+     *                                                   enabling the browser to provide functionality
+     *                                                   based on file type.
+     * @param options - Optional options to Blob Set HTTP Headers operation.
      */
-    BlobClient.prototype.setHTTPHeaders = function (blobHTTPHeaders, options) {
+    async setHTTPHeaders(blobHTTPHeaders, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_7;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setHTTPHeaders", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setHTTPHeaders({
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_7 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setHTTPHeaders", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setHttpHeaders(Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets user-defined metadata for the specified blob as one or more name-value pairs.
      *
@@ -26593,196 +28515,113 @@ var BlobClient = /** @class */ (function (_super) {
      * metadata will be removed.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata
      *
-     * @param {Metadata} [metadata] Replace existing metadata with this value.
+     * @param metadata - Replace existing metadata with this value.
      *                               If no value provided the existing metadata will be removed.
-     * @param {BlobSetMetadataOptions} [options] Optional options to Set Metadata operation.
-     * @returns {Promise<BlobSetMetadataResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to Set Metadata operation.
      */
-    BlobClient.prototype.setMetadata = function (metadata, options) {
+    async setMetadata(metadata, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_8;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setMetadata", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setMetadata({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_8 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setMetadata", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets tags on the underlying blob.
      * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters.  Tag values must be between 0 and 256 characters.
      * Valid tag key and value characters include lower and upper case letters, digits (0-9),
      * space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').
      *
-     * @param {Tags} tags
-     * @param {BlobSetTagsOptions} [options={}]
-     * @returns {Promise<BlobSetTagsResponse>}
-     * @memberof BlobClient
+     * @param tags -
+     * @param options -
      */
-    BlobClient.prototype.setTags = function (tags, options) {
+    async setTags(tags, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setTags", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTags({
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions,
-                                tags: toBlobTags(tags)
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setTags", options);
+        try {
+            return await this.blobContext.setTags(Object.assign(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the tags associated with the underlying blob.
      *
-     * @param {BlobGetTagsOptions} [options={}]
-     * @returns {Promise<BlobGetTagsResponse>}
-     * @memberof BlobClient
+     * @param options -
      */
-    BlobClient.prototype.getTags = function (options) {
+    async getTags(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getTags", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.getTags({
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _c.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getTags", options);
+        try {
+            const response = await this.blobContext.getTags(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the blob.
      *
-     * @param {string} [proposeLeaseId] Initial proposed lease Id.
-     * @returns {BlobLeaseClient} A new BlobLeaseClient object for managing leases on the blob.
-     * @memberof BlobClient
+     * @param proposeLeaseId - Initial proposed lease Id.
+     * @returns A new BlobLeaseClient object for managing leases on the blob.
      */
-    BlobClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a read-only snapshot of a blob.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob
      *
-     * @param {BlobCreateSnapshotOptions} [options] Optional options to the Blob Create Snapshot operation.
-     * @returns {Promise<BlobCreateSnapshotResponse>}
-     * @memberof BlobClient
+     * @param options - Optional options to the Blob Create Snapshot operation.
      */
-    BlobClient.prototype.createSnapshot = function (options) {
+    async createSnapshot(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_11;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-createSnapshot", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.createSnapshot({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_11 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-createSnapshot", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.createSnapshot(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * This method returns a long running operation poller that allows you to wait
@@ -26852,157 +28691,84 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} copySource url to the source Azure Blob/File.
-     * @param {BlobBeginCopyFromURLOptions} [options] Optional options to the Blob Start Copy From URL operation.
+     * @param copySource - url to the source Azure Blob/File.
+     * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.beginCopyFromURL = function (copySource, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var client, poller;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        client = {
-                            abortCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.abortCopyFromURL.apply(_this, args);
-                            },
-                            getProperties: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.getProperties.apply(_this, args);
-                            },
-                            startCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.startCopyFromURL.apply(_this, args);
-                            }
-                        };
-                        poller = new BlobBeginCopyFromUrlPoller({
-                            blobClient: client,
-                            copySource: copySource,
-                            intervalInMs: options.intervalInMs,
-                            onProgress: options.onProgress,
-                            resumeFrom: options.resumeFrom,
-                            startCopyFromURLOptions: options
-                        });
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        return [4 /*yield*/, poller.poll()];
-                    case 1:
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        _a.sent();
-                        return [2 /*return*/, poller];
-                }
-            });
+    async beginCopyFromURL(copySource, options = {}) {
+        const client = {
+            abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),
+            getProperties: (...args) => this.getProperties(...args),
+            startCopyFromURL: (...args) => this.startCopyFromURL(...args)
+        };
+        const poller = new BlobBeginCopyFromUrlPoller({
+            blobClient: client,
+            copySource,
+            intervalInMs: options.intervalInMs,
+            onProgress: options.onProgress,
+            resumeFrom: options.resumeFrom,
+            startCopyFromURLOptions: options
         });
-    };
+        // Trigger the startCopyFromURL call by calling poll.
+        // Any errors from this method should be surfaced to the user.
+        await poller.poll();
+        return poller;
+    }
     /**
      * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero
      * length and full metadata. Version 2012-02-12 and newer.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob
      *
-     * @param {string} copyId Id of the Copy From URL operation.
-     * @param {BlobAbortCopyFromURLOptions} [options] Optional options to the Blob Abort Copy From URL operation.
-     * @returns {Promise<BlobAbortCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copyId - Id of the Copy From URL operation.
+     * @param options - Optional options to the Blob Abort Copy From URL operation.
      */
-    BlobClient.prototype.abortCopyFromURL = function (copyId, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-abortCopyFromURL", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.abortCopyFromURL(copyId, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async abortCopyFromURL(copyId, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-abortCopyFromURL", options);
+        try {
+            return await this.blobContext.abortCopyFromURL(copyId, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not
      * return a response until the copy is complete.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url
      *
-     * @param {string} copySource The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
-     * @param {BlobSyncCopyFromURLOptions} [options={}]
-     * @returns {Promise<BlobCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
+     * @param options -
      */
-    BlobClient.prototype.syncCopyFromURL = function (copySource, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_13;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-syncCopyFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.copyFromURL(copySource, {
-                                abortSignal: options.abortSignal,
-                                metadata: options.metadata,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                sourceContentMD5: options.sourceContentMD5,
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_13 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async syncCopyFromURL(copySource, options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("BlobClient-syncCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.copyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, sourceContentMD5: options.sourceContentMD5, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), blobTagsString: toBlobTagsString(options.tags), immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant
@@ -27011,170 +28777,122 @@ var BlobClient = /** @class */ (function (_super) {
      * storage type. This operation does not update the blob's ETag.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier
      *
-     * @param {BlockBlobTier | PremiumPageBlobTier | string} tier The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
-     * @param {BlobSetTierOptions} [options] Optional options to the Blob Set Tier operation.
-     * @returns {Promise<BlobsSetTierResponse>}
-     * @memberof BlobClient
+     * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
+     * @param options - Optional options to the Blob Set Tier operation.
      */
-    BlobClient.prototype.setAccessTier = function (tier, options) {
+    async setAccessTier(tier, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_14;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setAccessTier", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTier(toAccessTier(tier), {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                rehydratePriority: options.rehydratePriority,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_14 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_14.message
-                        });
-                        throw e_14;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setAccessTier", options);
+        try {
+            return await this.blobContext.setTier(toAccessTier(tier), Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.downloadToBuffer = function (param1, param2, param3, param4) {
-        if (param4 === void 0) { param4 = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer, offset, count, options, _a, span, spanOptions, response, transferProgress_1, batch, _loop_1, off, e_15;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        offset = 0;
-                        count = 0;
-                        options = param4;
-                        if (param1 instanceof Buffer) {
-                            buffer = param1;
-                            offset = param2 || 0;
-                            count = typeof param3 === "number" ? param3 : 0;
-                        }
-                        else {
-                            offset = typeof param1 === "number" ? param1 : 0;
-                            count = typeof param2 === "number" ? param2 : 0;
-                            options = param3 || {};
-                        }
-                        _a = createSpan("BlobClient-downloadToBuffer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0) {
-                            throw new RangeError("blockSize option must be >= 0");
-                        }
-                        if (options.blockSize === 0) {
-                            options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                        }
-                        if (offset < 0) {
-                            throw new RangeError("offset option must be >= 0");
-                        }
-                        if (count && count <= 0) {
-                            throw new RangeError("count option must be > 0");
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (!!count) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.getProperties(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        count = response.contentLength - offset;
-                        if (count < 0) {
-                            throw new RangeError("offset " + offset + " shouldn't be larger than blob size " + response.contentLength);
-                        }
-                        _b.label = 3;
-                    case 3:
-                        // Allocate the buffer of size = count if the buffer is not provided
-                        if (!buffer) {
-                            try {
-                                buffer = Buffer.alloc(count);
-                            }
-                            catch (error) {
-                                throw new Error("Unable to allocate the buffer of size: " + count + "(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\t " + error.message);
-                            }
-                        }
-                        if (buffer.length < count) {
-                            throw new RangeError("The buffer's size should be equal to or larger than the request count of bytes: " + count);
-                        }
-                        transferProgress_1 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_1 = function (off) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var chunkEnd, response, stream;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            chunkEnd = offset + count;
-                                            if (off + options.blockSize < chunkEnd) {
-                                                chunkEnd = off + options.blockSize;
-                                            }
-                                            return [4 /*yield*/, this.download(off, chunkEnd - off, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    maxRetryRequests: options.maxRetryRequestsPerBlock,
-                                                    customerProvidedKey: options.customerProvidedKey,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            response = _a.sent();
-                                            stream = response.readableStreamBody;
-                                            return [4 /*yield*/, streamToBuffer(stream, buffer, off - offset, chunkEnd - offset)];
-                                        case 2:
-                                            _a.sent();
-                                            // Update progress after block is downloaded, in case of block trying
-                                            // Could provide finer grained progress updating inside HTTP requests,
-                                            // only if convenience layer download try is enabled
-                                            transferProgress_1 += chunkEnd - off;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_1 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (off = offset; off < offset + count; off = off + options.blockSize) {
-                            _loop_1(off);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, buffer];
-                    case 5:
-                        e_15 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_15.message
-                        });
-                        throw e_15;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async downloadToBuffer(param1, param2, param3, param4 = {}) {
+        let buffer;
+        let offset = 0;
+        let count = 0;
+        let options = param4;
+        if (param1 instanceof Buffer) {
+            buffer = param1;
+            offset = param2 || 0;
+            count = typeof param3 === "number" ? param3 : 0;
+        }
+        else {
+            offset = typeof param1 === "number" ? param1 : 0;
+            count = typeof param2 === "number" ? param2 : 0;
+            options = param3 || {};
+        }
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToBuffer", options);
+        try {
+            if (!options.blockSize) {
+                options.blockSize = 0;
+            }
+            if (options.blockSize < 0) {
+                throw new RangeError("blockSize option must be >= 0");
+            }
+            if (options.blockSize === 0) {
+                options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
+            }
+            if (offset < 0) {
+                throw new RangeError("offset option must be >= 0");
+            }
+            if (count && count <= 0) {
+                throw new RangeError("count option must be greater than 0");
+            }
+            if (!options.conditions) {
+                options.conditions = {};
+            }
+            // Customer doesn't specify length, get it
+            if (!count) {
+                const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+                count = response.contentLength - offset;
+                if (count < 0) {
+                    throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);
                 }
+            }
+            // Allocate the buffer of size = count if the buffer is not provided
+            if (!buffer) {
+                try {
+                    buffer = Buffer.alloc(count);
+                }
+                catch (error) {
+                    throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the "downloadToBuffer" method or try using other methods like "download" or "downloadToFile".\t ${error.message}`);
+                }
+            }
+            if (buffer.length < count) {
+                throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);
+            }
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let off = offset; off < offset + count; off = off + options.blockSize) {
+                batch.addOperation(async () => {
+                    // Exclusive chunk end position
+                    let chunkEnd = offset + count;
+                    if (off + options.blockSize < chunkEnd) {
+                        chunkEnd = off + options.blockSize;
+                    }
+                    const response = await this.download(off, chunkEnd - off, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        maxRetryRequests: options.maxRetryRequestsPerBlock,
+                        customerProvidedKey: options.customerProvidedKey,
+                        tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
+                    });
+                    const stream = response.readableStreamBody;
+                    await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);
+                    // Update progress after block is downloaded, in case of block trying
+                    // Could provide finer grained progress updating inside HTTP requests,
+                    // only if convenience layer download try is enabled
+                    transferProgress += chunkEnd - off;
+                    if (options.onProgress) {
+                        options.onProgress({ loadedBytes: transferProgress });
+                    }
+                });
+            }
+            await batch.do();
+            return buffer;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -27182,58 +28900,40 @@ var BlobClient = /** @class */ (function (_super) {
      * Fails if the the given file path already exits.
      * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.
      *
-     * @param {string} filePath
-     * @param {number} [offset] From which position of the block blob to download.
-     * @param {number} [count] How much data to be downloaded. Will download to the end when passing undefined.
-     * @param {BlobDownloadOptions} [options] Options to Blob download options.
-     * @returns {Promise<BlobDownloadResponseParsed>} The response data for blob download operation,
+     * @param filePath -
+     * @param offset - From which position of the block blob to download.
+     * @param count - How much data to be downloaded. Will download to the end when passing undefined.
+     * @param options - Options to Blob download options.
+     * @returns The response data for blob download operation,
      *                                                 but with readableStreamBody set to undefined since its
      *                                                 content is already read and written into a local file
      *                                                 at the specified path.
-     * @memberof BlobClient
      */
-    BlobClient.prototype.downloadToFile = function (filePath, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, e_16;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-downloadToFile", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        return [4 /*yield*/, this.download(offset, count, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        if (!response.readableStreamBody) return [3 /*break*/, 4];
-                        return [4 /*yield*/, readStreamToLocalFile(response.readableStreamBody, filePath)];
-                    case 3:
-                        _b.sent();
-                        _b.label = 4;
-                    case 4:
-                        // The stream is no longer accessible so setting it to undefined.
-                        response.blobDownloadStream = undefined;
-                        return [2 /*return*/, response];
-                    case 5:
-                        e_16 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_16.message
-                        });
-                        throw e_16;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
-                }
+    async downloadToFile(filePath, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToFile", options);
+        try {
+            const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+            if (response.readableStreamBody) {
+                await readStreamToLocalFile(response.readableStreamBody, filePath);
+            }
+            // The stream is no longer accessible so setting it to undefined.
+            response.blobDownloadStream = undefined;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.getBlobAndContainerNamesFromUrl = function () {
-        var containerName;
-        var blobName;
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    getBlobAndContainerNamesFromUrl() {
+        let containerName;
+        let blobName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer/blob?sasString";
@@ -27242,11 +28942,11 @@ var BlobClient = /** @class */ (function (_super) {
             // "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`
             // http://localhost:10001/devstoreaccount1/containername/blob
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -27254,14 +28954,14 @@ var BlobClient = /** @class */ (function (_super) {
                 // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob
                 // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob
                 // .getPath() -> /devstoreaccount1/containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
                 containerName = pathComponents[2];
                 blobName = pathComponents[4];
             }
             else {
                 // "https://customdomain.com/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -27271,18 +28971,15 @@ var BlobClient = /** @class */ (function (_super) {
             // Azure Storage Server will replace "\" with "/" in the blob names
             //   doing the same in the SDK side so that the user doesn't have to replace "\" instances in the blobName
             blobName = blobName.replace(/\\/g, "/");
-            if (!blobName) {
-                throw new Error("Provided blobName is invalid.");
-            }
-            else if (!containerName) {
+            if (!containerName) {
                 throw new Error("Provided containerName is invalid.");
             }
-            return { blobName: blobName, containerName: containerName };
+            return { blobName, containerName };
         }
         catch (error) {
             throw new Error("Unable to extract blobName and containerName with provided information.");
         }
-    };
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * In version 2012-02-12 and later, the source for a Copy Blob operation can be
@@ -27293,78 +28990,132 @@ var BlobClient = /** @class */ (function (_super) {
      * operation to copy from another storage account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob
      *
-     * @param {string} copySource url to the source Azure Blob/File.
-     * @param {BlobStartCopyFromURLOptions} [options] Optional options to the Blob Start Copy From URL operation.
-     * @returns {Promise<BlobStartCopyFromURLResponse>}
-     * @memberof BlobClient
+     * @param copySource - url to the source Azure Blob/File.
+     * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.startCopyFromURL = function (copySource, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_17;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-startCopyFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.startCopyFromURL(copySource, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
-                                    sourceIfTags: options.sourceConditions.tagConditions
-                                },
-                                rehydratePriority: options.rehydratePriority,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                sealBlob: options.sealBlob,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_17 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_17.message
-                        });
-                        throw e_17;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async startCopyFromURL(copySource, options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("BlobClient-startCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.startCopyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
+                    sourceIfTags: options.sourceConditions.tagConditions
+                }, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Only available for BlobClient constructed with a shared key credential.
+     *
+     * Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     * @param options - Optional parameters.
+     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
+     */
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
+                throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
+            }
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
-    return BlobClient;
-}(StorageClient));
+    }
+    /**
+     * Delete the immutablility policy on the blob.
+     *
+     * @param options - Optional options to delete immutability policy on the blob.
+     */
+    async deleteImmutabilityPolicy(options) {
+        const { span, updatedOptions } = createSpan("BlobClient-deleteImmutabilityPolicy", options);
+        try {
+            return await this.blobContext.deleteImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Set immutablility policy on the blob.
+     *
+     * @param options - Optional options to set immutability policy on the blob.
+     */
+    async setImmutabilityPolicy(immutabilityPolicy, options) {
+        const { span, updatedOptions } = createSpan("BlobClient-setImmutabilityPolicy", options);
+        try {
+            return await this.blobContext.setImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal, immutabilityPolicyExpiry: immutabilityPolicy.expiriesOn, immutabilityPolicyMode: immutabilityPolicy.policyMode, modifiedAccessConditions: options === null || options === void 0 ? void 0 : options.modifiedAccessCondition }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Set legal hold on the blob.
+     *
+     * @param options - Optional options to set legal hold on the blob.
+     */
+    async setLegalHold(legalHoldEnabled, options) {
+        const { span, updatedOptions } = createSpan("BlobClient-setLegalHold", options);
+        try {
+            return await this.blobContext.setLegalHold(legalHoldEnabled, Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * AppendBlobClient defines a set of operations applicable to append blobs.
- *
- * @export
- * @class AppendBlobClient
- * @extends {BlobClient}
  */
-var AppendBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(AppendBlobClient, _super);
-    function AppendBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class AppendBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -27389,12 +29140,12 @@ var AppendBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -27414,29 +29165,26 @@ var AppendBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.appendBlobContext = new AppendBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.appendBlobContext = new AppendBlob(this.storageClientContext);
     }
     /**
      * Creates a new AppendBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {AppendBlobClient} A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof AppendBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    AppendBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {AppendBlobCreateOptions} [options] Options to the Append Block Create operation.
-     * @returns {Promise<AppendBlobCreateResponse>}
-     * @memberof AppendBlobClient
+     * @param options - Options to the Append Block Create operation.
+     *
      *
      * Example usage:
      *
@@ -27445,148 +29193,90 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await appendBlobClient.create();
      * ```
      */
-    AppendBlobClient.prototype.create = function (options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_18;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-create", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.create(0, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_18 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_18.message
-                        });
-                        throw e_18;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        var _a, _b, _c;
+        const { span, updatedOptions } = createSpan("AppendBlobClient-create", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.create(0, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * If the blob with the same name already exists, the content of the existing blob will remain unchanged.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {AppendBlobCreateIfNotExistsOptions} [options]
-     * @returns {Promise<AppendBlobCreateIfNotExistsResponse>}
-     * @memberof AppendBlobClient
+     * @param options -
      */
-    AppendBlobClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, conditions, res, e_19;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("AppendBlobClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        conditions = { ifNoneMatch: ETagAny };
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_19 = _d.sent();
-                        if (((_a = e_19.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_19.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_19.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_19.message
-                        });
-                        throw e_19;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-createIfNotExists", options);
+        const conditions = { ifNoneMatch: ETagAny };
+        try {
+            const res = await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Seals the append blob, making it read only.
      *
-     * @param {AppendBlobSealOptions} [options={}]
-     * @returns {Promise<AppendBlobAppendBlockResponse>}
-     * @memberof AppendBlobClient
+     * @param options -
      */
-    AppendBlobClient.prototype.seal = function (options) {
+    async seal(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_20;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-seal", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.appendBlobContext.seal({
-                                abortSignal: options.abortSignal,
-                                appendPositionAccessConditions: options.conditions,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_20 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_20.message
-                        });
-                        throw e_20;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-seal", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.appendBlobContext.seal(Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Commits a new block of data to the end of the existing append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/append-block
      *
-     * @param {HttpRequestBody} body Data to be appended.
-     * @param {number} contentLength Length of the body in bytes.
-     * @param {AppendBlobAppendBlockOptions} [options] Options to the Append Block operation.
-     * @returns {Promise<AppendBlobAppendBlockResponse>}
-     * @memberof AppendBlobClient
+     * @param body - Data to be appended.
+     * @param contentLength - Length of the body in bytes.
+     * @param options - Options to the Append Block operation.
+     *
      *
      * Example usage:
      *
@@ -27603,132 +29293,81 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await existingAppendBlobClient.appendBlock(content, content.length);
      * ```
      */
-    AppendBlobClient.prototype.appendBlock = function (body, contentLength, options) {
+    async appendBlock(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_21;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlock", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlock(body, contentLength, {
-                                abortSignal: options.abortSignal,
-                                appendPositionAccessConditions: options.conditions,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_21 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_21.message
-                        });
-                        throw e_21;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlock", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlock(contentLength, body, Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob
      * where the contents are read from a source url.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url
      *
-     * @param {string} sourceURL
+     * @param sourceURL -
      *                 The url to the blob that will be the source of the copy. A source blob in the same storage account can
      *                 be authenticated via Shared Key. However, if the source is a blob in another account, the source blob
      *                 must either be public or must be authenticated via a shared access signature. If the source blob is
      *                 public, no authentication is required to perform the operation.
-     * @param {number} sourceOffset Offset in source to be appended
-     * @param {number} count Number of bytes to be appended as a block
-     * @param {AppendBlobAppendBlockFromURLOptions} [options={}]
-     * @returns {Promise<AppendBlobAppendBlockFromUrlResponse>}
-     * @memberof AppendBlobClient
+     * @param sourceOffset - Offset in source to be appended
+     * @param count - Number of bytes to be appended as a block
+     * @param options -
      */
-    AppendBlobClient.prototype.appendBlockFromURL = function (sourceURL, sourceOffset, count, options) {
+    async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_22;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlockFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, {
-                                abortSignal: options.abortSignal,
-                                sourceRange: rangeToString({ offset: sourceOffset, count: count }),
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                leaseAccessConditions: options.conditions,
-                                appendPositionAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_22 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_22.message
-                        });
-                        throw e_22;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlockFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, Object.assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return AppendBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * BlockBlobClient defines a set of operations applicable to block blobs.
- *
- * @export
- * @class BlockBlobClient
- * @extends {BlobClient}
  */
-var BlockBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlockBlobClient, _super);
-    function BlockBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class BlockBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -27753,12 +29392,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -27778,23 +29417,21 @@ var BlockBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.blockBlobContext = new BlockBlob(_this.storageClientContext);
-        _this._blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.blockBlobContext = new BlockBlob(this.storageClientContext);
+        this._blobContext = new Blob$1(this.storageClientContext);
     }
     /**
      * Creates a new BlockBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a URL to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {BlockBlobClient} A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof BlockBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    BlockBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -27822,57 +29459,38 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} query
-     * @param {BlockBlobQueryOptions} [options={}]
-     * @returns {Promise<BlobDownloadResponseModel>}
-     * @memberof BlockBlobClient
+     * @param query -
+     * @param options -
      */
-    BlockBlobClient.prototype.query = function (query, options) {
+    async query(query, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, response, e_23;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlockBlobClient-query", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._blobContext.query({
-                                abortSignal: options.abortSignal,
-                                queryRequest: {
-                                    expression: query,
-                                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
-                                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
-                                },
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _c.sent();
-                        return [2 /*return*/, new BlobQueryResponse(response, {
-                                abortSignal: options.abortSignal,
-                                onProgress: options.onProgress,
-                                onError: options.onError
-                            })];
-                    case 3:
-                        e_23 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_23.message
-                        });
-                        throw e_23;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlockBlobClient-query", options);
+        try {
+            if (false) {}
+            const response = await this._blobContext.query(Object.assign({ abortSignal: options.abortSignal, queryRequest: {
+                    queryType: "SQL",
+                    expression: query,
+                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
+                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
+                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return new BlobQueryResponse(response, {
+                abortSignal: options.abortSignal,
+                onProgress: options.onProgress,
+                onError: options.onError
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      * Updating an existing block blob overwrites any existing metadata on the blob.
@@ -27886,13 +29504,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {HttpRequestBody} body Blob, string, ArrayBuffer, ArrayBufferView or a function
+     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
      *                               which returns a new Readable stream whose offset is from data source beginning.
-     * @param {number} contentLength Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
+     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
      *                               string including non non-Base64/Hex-encoded characters.
-     * @param {BlockBlobUploadOptions} [options] Options to the Block Blob Upload operation.
-     * @returns {Promise<BlockBlobUploadResponse>} Response data for the Block Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to the Block Blob Upload operation.
+     * @returns Response data for the Block Blob Upload operation.
      *
      * Example usage:
      *
@@ -27901,107 +29518,35 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    BlockBlobClient.prototype.upload = function (body, contentLength, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_24;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-upload", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.upload(body, contentLength, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_24 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_24.message
-                        });
-                        throw e_24;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async upload(body, contentLength, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-upload", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.upload(contentLength, body, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
-     * Uploads the specified block to the block blob's "staging area" to be later
-     * committed by a call to commitBlockList.
-     * @see https://docs.microsoft.com/rest/api/storageservices/put-block
+     * Creates a new Block Blob where the contents of the blob are read from a given URL.
+     * This API is supported beginning with the 2020-04-08 version. Partial updates
+     * are not supported with Put Blob from URL; the content of an existing blob is overwritten with
+     * the content of the new blob.  To perform partial updates to a block blob’s contents using a
+     * source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.
      *
-     * @param {string} blockId A 64-byte value that is base64-encoded
-     * @param {HttpRequestBody} body Data to upload to the staging area.
-     * @param {number} contentLength Number of bytes to upload.
-     * @param {BlockBlobStageBlockOptions} [options] Options to the Block Blob Stage Block operation.
-     * @returns {Promise<BlockBlobStageBlockResponse>} Response data for the Block Blob Stage Block operation.
-     * @memberof BlockBlobClient
-     */
-    BlockBlobClient.prototype.stageBlock = function (blockId, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_25;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlock", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlock(blockId, contentLength, body, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                onUploadProgress: options.onProgress,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_25 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_25.message
-                        });
-                        throw e_25;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    /**
-     * The Stage Block From URL operation creates a new block to be committed as part
-     * of a blob where the contents are read from a URL.
-     * This API is available starting in version 2018-03-28.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url
-     *
-     * @param {string} blockId A 64-byte value that is base64-encoded
-     * @param {string} sourceURL Specifies the URL of the blob. The value
+     * @param sourceURL - Specifies the URL of the blob. The value
      *                           may be a URL of up to 2 KB in length that specifies a blob.
      *                           The value should be URL-encoded as it would appear
      *                           in a request URI. The source blob must either be public
@@ -28010,51 +29555,101 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *                           to perform the operation. Here are some examples of source object URLs:
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
-     * @param {number} [offset] From which position of the blob to download, >= 0
-     * @param {number} [count] How much data to be downloaded, > 0. Will download to the end when undefined
-     * @param {BlockBlobStageBlockFromURLOptions} [options={}] Options to the Block Blob Stage Block From URL operation.
-     * @returns {Promise<BlockBlobStageBlockFromURLResponse>} Response data for the Block Blob Stage Block From URL operation.
-     * @memberof BlockBlobClient
+     * @param options - Optional parameters.
      */
-    BlockBlobClient.prototype.stageBlockFromURL = function (blockId, sourceURL, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_26;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlockFromURL", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_26 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_26.message
-                        });
-                        throw e_26;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async syncUploadFromURL(sourceURL, options = {}) {
+        var _a, _b, _c, _d, _e;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-syncUploadFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
+                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
+                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
+                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
+                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
+                }, cpkInfo: options.customerProvidedKey, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Uploads the specified block to the block blob's "staging area" to be later
+     * committed by a call to commitBlockList.
+     * @see https://docs.microsoft.com/rest/api/storageservices/put-block
+     *
+     * @param blockId - A 64-byte value that is base64-encoded
+     * @param body - Data to upload to the staging area.
+     * @param contentLength - Number of bytes to upload.
+     * @param options - Options to the Block Blob Stage Block operation.
+     * @returns Response data for the Block Blob Stage Block operation.
+     */
+    async stageBlock(blockId, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlock", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlock(blockId, contentLength, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * The Stage Block From URL operation creates a new block to be committed as part
+     * of a blob where the contents are read from a URL.
+     * This API is available starting in version 2018-03-28.
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url
+     *
+     * @param blockId - A 64-byte value that is base64-encoded
+     * @param sourceURL - Specifies the URL of the blob. The value
+     *                           may be a URL of up to 2 KB in length that specifies a blob.
+     *                           The value should be URL-encoded as it would appear
+     *                           in a request URI. The source blob must either be public
+     *                           or must be authenticated via a shared access signature.
+     *                           If the source blob is public, no authentication is required
+     *                           to perform the operation. Here are some examples of source object URLs:
+     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob
+     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
+     * @param offset - From which position of the blob to download, greater than or equal to 0
+     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined
+     * @param options - Options to the Block Blob Stage Block From URL operation.
+     * @returns Response data for the Block Blob Stage Block From URL operation.
+     */
+    async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlockFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes a blob by specifying the list of block IDs that make up the blob.
      * In order to be written as part of a blob, a block must have been successfully written
@@ -28063,329 +29658,278 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * blocks together. Any blocks not specified in the block list and permanently deleted.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-block-list
      *
-     * @param {string[]} blocks  Array of 64-byte value that is base64-encoded
-     * @param {BlockBlobCommitBlockListOptions} [options] Options to the Block Blob Commit Block List operation.
-     * @returns {Promise<BlockBlobCommitBlockListResponse>} Response data for the Block Blob Commit Block List operation.
-     * @memberof BlockBlobClient
+     * @param blocks -  Array of 64-byte value that is base64-encoded
+     * @param options - Options to the Block Blob Commit Block List operation.
+     * @returns Response data for the Block Blob Commit Block List operation.
      */
-    BlockBlobClient.prototype.commitBlockList = function (blocks, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_27;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-commitBlockList", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.commitBlockList({ latest: blocks }, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_27 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_27.message
-                        });
-                        throw e_27;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async commitBlockList(blocks, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-commitBlockList", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.commitBlockList({ latest: blocks }, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of blocks that have been uploaded as part of a block blob
      * using the specified block list filter.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-block-list
      *
-     * @param {BlockListType} listType Specifies whether to return the list of committed blocks,
+     * @param listType - Specifies whether to return the list of committed blocks,
      *                                        the list of uncommitted blocks, or both lists together.
-     * @param {BlockBlobGetBlockListOptions} [options] Options to the Block Blob Get Block List operation.
-     * @returns {Promise<BlockBlobGetBlockListResponse>} Response data for the Block Blob Get Block List operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to the Block Blob Get Block List operation.
+     * @returns Response data for the Block Blob Get Block List operation.
      */
-    BlockBlobClient.prototype.getBlockList = function (listType, options) {
+    async getBlockList(listType, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, res, e_28;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlockBlobClient-getBlockList", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blockBlobContext.getBlockList(listType, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        res = _c.sent();
-                        if (!res.committedBlocks) {
-                            res.committedBlocks = [];
-                        }
-                        if (!res.uncommittedBlocks) {
-                            res.uncommittedBlocks = [];
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_28 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_28.message
-                        });
-                        throw e_28;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-getBlockList", options);
+        try {
+            const res = await this.blockBlobContext.getBlockList(listType, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            if (!res.committedBlocks) {
+                res.committedBlocks = [];
+            }
+            if (!res.uncommittedBlocks) {
+                res.uncommittedBlocks = [];
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     // High level functions
+    /**
+     * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.
+     *
+     * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
+     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
+     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
+     * to commit the block list.
+     *
+     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is
+     * `blobContentType`, enabling the browser to provide
+     * functionality based on file type.
+     *
+     * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView
+     * @param options -
+     */
+    async uploadData(data, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadData", options);
+        try {
+            if (true) {
+                let buffer;
+                if (data instanceof Buffer) {
+                    buffer = data;
+                }
+                else if (data instanceof ArrayBuffer) {
+                    buffer = Buffer.from(data);
+                }
+                else {
+                    data = data;
+                    buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
+                }
+                return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);
+            }
+            else {}
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN BROWSERS.
      *
      * Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.
      *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
+     * When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
      * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call
      * {@link commitBlockList} to commit the block list.
      *
-     * @export
-     * @param {Blob | ArrayBuffer | ArrayBufferView} browserData Blob, File, ArrayBuffer or ArrayBufferView
-     * @param {BlockBlobParallelUploadOptions} [options] Options to upload browser data.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is
+     * `blobContentType`, enabling the browser to provide
+     * functionality based on file type.
+     *
+     * @deprecated Use {@link uploadData} instead.
+     *
+     * @param browserData - Blob, File, ArrayBuffer or ArrayBufferView
+     * @param options - Options to upload browser data.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadBrowserData = function (browserData, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, browserBlob_1, e_29;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadBrowserData", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        browserBlob_1 = new Blob([browserData]);
-                        return [4 /*yield*/, this.uploadSeekableBlob(function (offset, size) {
-                                return browserBlob_1.slice(offset, offset + size);
-                            }, browserBlob_1.size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_29 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_29.message
-                        });
-                        throw e_29;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBrowserData(browserData, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadBrowserData", options);
+        try {
+            const browserBlob = new Blob([browserData]);
+            return await this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
-     * ONLY AVAILABLE IN BROWSERS.
      *
-     * Uploads a browser {@link Blob} object to block blob. Requires a blobFactory as the data source,
-     * which need to return a {@link Blob} object with the offset and size provided.
+     * Uploads data to block blob. Requires a bodyFactory as the data source,
+     * which need to return a {@link HttpRequestBody} object with the offset and size provided.
      *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
-     * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList
+     * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is
+     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.
+     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
      * to commit the block list.
      *
-     * @param {(offset: number, size: number) => Blob} blobFactory
-     * @param {number} size size of the data to upload.
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param bodyFactory -
+     * @param size - size of the data to upload.
+     * @param options - Options to Upload to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadSeekableBlob = function (blobFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, numBlocks_1, blockList_1, blockIDPrefix_1, transferProgress_2, batch, _loop_2, i, e_30;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-UploadSeekableBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(blobFactory(0, size), size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_1 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_1 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_1 = [];
-                        blockIDPrefix_1 = coreHttp.generateUuid();
-                        transferProgress_2 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_2 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_1, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_1 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_1.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, blobFactory(start, contentLength), contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            // TODO: Hook with convenience layer progress event in finer level
-                                            transferProgress_2 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({
-                                                    loadedBytes: transferProgress_2
-                                                });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_1; i++) {
-                            _loop_2(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, this.commitBlockList(blockList_1, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 5:
-                        e_30 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_30.message
-                        });
-                        throw e_30;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+    async uploadSeekableInternal(bodyFactory, size, options = {}) {
+        if (!options.blockSize) {
+            options.blockSize = 0;
+        }
+        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
+            throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);
+        }
+        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
+            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
+        }
+        if (options.maxSingleShotSize < 0 ||
+            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
+            throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);
+        }
+        if (options.blockSize === 0) {
+            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`${size} is too larger to upload to a block blob.`);
+            }
+            if (size > options.maxSingleShotSize) {
+                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
+                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
+                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
                 }
+            }
+        }
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadSeekableInternal", options);
+        try {
+            if (size <= options.maxSingleShotSize) {
+                return await this.upload(bodyFactory(0, size), size, updatedOptions);
+            }
+            const numBlocks = Math.floor((size - 1) / options.blockSize) + 1;
+            if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +
+                    `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);
+            }
+            const blockList = [];
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let i = 0; i < numBlocks; i++) {
+                batch.addOperation(async () => {
+                    const blockID = generateBlockID(blockIDPrefix, i);
+                    const start = options.blockSize * i;
+                    const end = i === numBlocks - 1 ? size : start + options.blockSize;
+                    const contentLength = end - start;
+                    blockList.push(blockID);
+                    await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        encryptionScope: options.encryptionScope,
+                        tracingOptions: updatedOptions.tracingOptions
+                    });
+                    // Update progress after block is successfully uploaded to server, in case of block trying
+                    // TODO: Hook with convenience layer progress event in finer level
+                    transferProgress += contentLength;
+                    if (options.onProgress) {
+                        options.onProgress({
+                            loadedBytes: transferProgress
+                        });
+                    }
+                });
+            }
+            await batch.do();
+            return this.commitBlockList(blockList, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
      * Uploads a local file in blocks to a block blob.
      *
-     * When file size <= 256MB, this method will use 1 upload call to finish the upload.
+     * When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.
      * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList
      * to commit the block list.
      *
-     * @param {string} filePath Full path of local file
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {(Promise<BlobUploadCommonResponse>)}  Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param filePath - Full path of local file
+     * @param options - Options to Upload to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadFile = function (filePath, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, size, e_31;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadFile", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        return [4 /*yield*/, fsStat(filePath)];
-                    case 2:
-                        size = (_b.sent()).size;
-                        return [4 /*yield*/, this.uploadResetableStream(function (offset, count) {
-                                return fsCreateReadStream(filePath, {
-                                    autoClose: true,
-                                    end: count ? offset + count - 1 : Infinity,
-                                    start: offset
-                                });
-                            }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_31 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_31.message
-                        });
-                        throw e_31;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async uploadFile(filePath, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadFile", options);
+        try {
+            const size = (await fsStat(filePath)).size;
+            return await this.uploadSeekableInternal((offset, count) => {
+                return () => fsCreateReadStream(filePath, {
+                    autoClose: true,
+                    end: count ? offset + count - 1 : Infinity,
+                    start: offset
+                });
+            }, size, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -28395,232 +29939,75 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * * Input stream highWaterMark is better to set a same value with bufferSize
      *    parameter, which will avoid Buffer.concat() operations.
      *
-     * @param {Readable} stream Node.js Readable stream
-     * @param {number} bufferSize Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB
-     * @param {number} maxConcurrency  Max concurrency indicates the max number of buffers that can be allocated,
+     * @param stream - Node.js Readable stream
+     * @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB
+     * @param maxConcurrency -  Max concurrency indicates the max number of buffers that can be allocated,
      *                                 positive correlation with max uploading concurrency. Default value is 5
-     * @param {BlockBlobUploadStreamOptions} [options] Options to Upload Stream to Block Blob operation.
-     * @returns {Promise<BlobUploadCommonResponse>} Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
+     * @param options - Options to Upload Stream to Block Blob operation.
+     * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadStream = function (stream, bufferSize, maxConcurrency, options) {
-        if (bufferSize === void 0) { bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES; }
-        if (maxConcurrency === void 0) { maxConcurrency = 5; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blockNum_1, blockIDPrefix_2, transferProgress_3, blockList_2, scheduler, e_32;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadStream", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        blockNum_1 = 0;
-                        blockIDPrefix_2 = coreHttp.generateUuid();
-                        transferProgress_3 = 0;
-                        blockList_2 = [];
-                        scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, function (body, length) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            var blockID;
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0:
-                                        blockID = generateBlockID(blockIDPrefix_2, blockNum_1);
-                                        blockList_2.push(blockID);
-                                        blockNum_1++;
-                                        return [4 /*yield*/, this.stageBlock(blockID, body, length, {
-                                                conditions: options.conditions,
-                                                encryptionScope: options.encryptionScope,
-                                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                            })];
-                                    case 1:
-                                        _a.sent();
-                                        // Update progress after block is successfully uploaded to server, in case of block trying
-                                        transferProgress_3 += length;
-                                        if (options.onProgress) {
-                                            options.onProgress({ loadedBytes: transferProgress_3 });
-                                        }
-                                        return [2 /*return*/];
-                                }
-                            });
-                        }); }, 
-                        // concurrency should set a smaller value than maxConcurrency, which is helpful to
-                        // reduce the possibility when a outgoing handler waits for stream data, in
-                        // this situation, outgoing handlers are blocked.
-                        // Outgoing queue shouldn't be empty.
-                        Math.ceil((maxConcurrency / 4) * 3));
-                        return [4 /*yield*/, scheduler.do()];
-                    case 2:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_2, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_32 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_32.message
-                        });
-                        throw e_32;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
+    async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadStream", options);
+        try {
+            let blockNum = 0;
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const blockList = [];
+            const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {
+                const blockID = generateBlockID(blockIDPrefix, blockNum);
+                blockList.push(blockID);
+                blockNum++;
+                await this.stageBlock(blockID, body, length, {
+                    conditions: options.conditions,
+                    encryptionScope: options.encryptionScope,
+                    tracingOptions: updatedOptions.tracingOptions
+                });
+                // Update progress after block is successfully uploaded to server, in case of block trying
+                transferProgress += length;
+                if (options.onProgress) {
+                    options.onProgress({ loadedBytes: transferProgress });
                 }
+            }, 
+            // concurrency should set a smaller value than maxConcurrency, which is helpful to
+            // reduce the possibility when a outgoing handler waits for stream data, in
+            // this situation, outgoing handlers are blocked.
+            // Outgoing queue shouldn't be empty.
+            Math.ceil((maxConcurrency / 4) * 3));
+            await scheduler.do();
+            return await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    /**
-     * ONLY AVAILABLE IN NODE.JS RUNTIME.
-     *
-     * Accepts a Node.js Readable stream factory, and uploads in blocks to a block blob.
-     * The Readable stream factory must returns a Node.js Readable stream starting from the offset defined. The offset
-     * is the offset in the block blob to be uploaded.
-     *
-     * When buffer length <= 256MB, this method will use 1 upload call to finish the upload.
-     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}
-     * to commit the block list.
-     *
-     * @export
-     * @param {(offset: number) => NodeJS.ReadableStream} streamFactory Returns a Node.js Readable stream starting
-     *                                                                  from the offset defined
-     * @param {number} size Size of the block blob
-     * @param {BlockBlobParallelUploadOptions} [options] Options to Upload to Block Blob operation.
-     * @returns {(Promise<BlobUploadCommonResponse>)}  Response data for the Blob Upload operation.
-     * @memberof BlockBlobClient
-     */
-    BlockBlobClient.prototype.uploadResetableStream = function (streamFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, numBlocks_2, blockList_3, blockIDPrefix_3, transferProgress_4, batch, _loop_3, i, e_33;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_BLOCKS * BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadResetableStream", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 6, 7, 8]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(function () { return streamFactory(0); }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_2 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_2 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_3 = [];
-                        blockIDPrefix_3 = coreHttp.generateUuid();
-                        transferProgress_4 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_3 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_3, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_2 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_3.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, function () { return streamFactory(start, contentLength); }, contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            transferProgress_4 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_4 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_2; i++) {
-                            _loop_3(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_3, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 5: return [2 /*return*/, _b.sent()];
-                    case 6:
-                        e_33 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_33.message
-                        });
-                        throw e_33;
-                    case 7:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 8: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlockBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * PageBlobClient defines a set of operations applicable to page blobs.
- *
- * @export
- * @class PageBlobClient
- * @extends {BlobClient}
  */
-var PageBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(PageBlobClient, _super);
-    function PageBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class PageBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -28645,12 +30032,12 @@ var PageBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -28670,531 +30057,320 @@ var PageBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.pageBlobContext = new PageBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.pageBlobContext = new PageBlob(this.storageClientContext);
     }
     /**
      * Creates a new PageBlobClient object identical to the source but with the
      * specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
      *
-     * @param {string} snapshot The snapshot timestamp.
-     * @returns {PageBlobClient} A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
-     * @memberof PageBlobClient
+     * @param snapshot - The snapshot timestamp.
+     * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    PageBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {number} size size of the page blob.
-     * @param {PageBlobCreateOptions} [options] Options to the Page Blob Create operation.
-     * @returns {Promise<PageBlobCreateResponse>} Response data for the Page Blob Create operation.
-     * @memberof PageBlobClient
+     * @param size - size of the page blob.
+     * @param options - Options to the Page Blob Create operation.
+     * @returns Response data for the Page Blob Create operation.
      */
-    PageBlobClient.prototype.create = function (size, options) {
-        var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_34;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-create", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.create(0, size, {
-                                abortSignal: options.abortSignal,
-                                blobHTTPHeaders: options.blobHTTPHeaders,
-                                blobSequenceNumber: options.blobSequenceNumber,
-                                leaseAccessConditions: options.conditions,
-                                metadata: options.metadata,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                tier: toAccessTier(options.tier),
-                                blobTagsString: toBlobTagsString(options.tags),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_34 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_34.message
-                        });
-                        throw e_34;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(size, options = {}) {
+        var _a, _b, _c;
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-create", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.create(0, size, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob. If the blob with the same name already exists, the content
      * of the existing blob will remain unchanged.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {number} size size of the page blob.
-     * @param {PageBlobCreateIfNotExistsOptions} [options]
-     * @returns {Promise<PageBlobCreateIfNotExistsResponse>}
-     * @memberof PageBlobClient
+     * @param size - size of the page blob.
+     * @param options -
      */
-    PageBlobClient.prototype.createIfNotExists = function (size, options) {
+    async createIfNotExists(size, options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, conditions, res, e_35;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("PageBlobClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        conditions = { ifNoneMatch: ETagAny };
-                        return [4 /*yield*/, this.create(size, tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_35 = _d.sent();
-                        if (((_a = e_35.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_35.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_35.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_35.message
-                        });
-                        throw e_35;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-createIfNotExists", options);
+        try {
+            const conditions = { ifNoneMatch: ETagAny };
+            const res = await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
      *
-     * @param {HttpRequestBody} body Data to upload
-     * @param {number} offset Offset of destination page blob
-     * @param {number} count Content length of the body, also number of bytes to be uploaded
-     * @param {PageBlobUploadPagesOptions} [options] Options to the Page Blob Upload Pages operation.
-     * @returns {Promise<PageBlobsUploadPagesResponse>} Response data for the Page Blob Upload Pages operation.
-     * @memberof PageBlobClient
+     * @param body - Data to upload
+     * @param offset - Offset of destination page blob
+     * @param count - Content length of the body, also number of bytes to be uploaded
+     * @param options - Options to the Page Blob Upload Pages operation.
+     * @returns Response data for the Page Blob Upload Pages operation.
      */
-    PageBlobClient.prototype.uploadPages = function (body, offset, count, options) {
+    async uploadPages(body, offset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_36;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-uploadPages", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPages(body, count, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                onUploadProgress: options.onProgress,
-                                range: rangeToString({ offset: offset, count: count }),
-                                sequenceNumberAccessConditions: options.conditions,
-                                transactionalContentMD5: options.transactionalContentMD5,
-                                transactionalContentCrc64: options.transactionalContentCrc64,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_36 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_36.message
-                        });
-                        throw e_36;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPages", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPages(count, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the
      * contents are read from a URL.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url
      *
-     * @param {string} sourceURL Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication
-     * @param {number} sourceOffset The source offset to copy from. Pass 0 to copy from the beginning of source page blob
-     * @param {number} destOffset Offset of destination page blob
-     * @param {number} count Number of bytes to be uploaded from source page blob
-     * @param {PageBlobUploadPagesFromURLOptions} [options={}]
-     * @returns {Promise<PageBlobUploadPagesFromURLResponse>}
-     * @memberof PageBlobClient
+     * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication
+     * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob
+     * @param destOffset - Offset of destination page blob
+     * @param count - Number of bytes to be uploaded from source page blob
+     * @param options -
      */
-    PageBlobClient.prototype.uploadPagesFromURL = function (sourceURL, sourceOffset, destOffset, count, options) {
+    async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_37;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _b = createSpan("PageBlobClient-uploadPagesFromURL", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count: count }), 0, rangeToString({ offset: destOffset, count: count }), {
-                                abortSignal: options.abortSignal,
-                                sourceContentMD5: options.sourceContentMD5,
-                                sourceContentCrc64: options.sourceContentCrc64,
-                                leaseAccessConditions: options.conditions,
-                                sequenceNumberAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                },
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_37 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_37.message
-                        });
-                        throw e_37;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPagesFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), Object.assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Frees the specified pages from the page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
      *
-     * @param {number} [offset] Starting byte position of the pages to clear.
-     * @param {number} [count] Number of bytes to clear.
-     * @param {PageBlobClearPagesOptions} [options] Options to the Page Blob Clear Pages operation.
-     * @returns {Promise<PageBlobClearPagesResponse>} Response data for the Page Blob Clear Pages operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the pages to clear.
+     * @param count - Number of bytes to clear.
+     * @param options - Options to the Page Blob Clear Pages operation.
+     * @returns Response data for the Page Blob Clear Pages operation.
      */
-    PageBlobClient.prototype.clearPages = function (offset, count, options) {
+    async clearPages(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_38;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-clearPages", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.clearPages(0, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                range: rangeToString({ offset: offset, count: count }),
-                                sequenceNumberAccessConditions: options.conditions,
-                                cpkInfo: options.customerProvidedKey,
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_38 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_38.message
-                        });
-                        throw e_38;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-clearPages", options);
+        try {
+            return await this.pageBlobContext.clearPages(0, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of valid page ranges for a page blob or snapshot of a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} [offset] Starting byte position of the page ranges.
-     * @param {number} [count] Number of bytes to get.
-     * @param {PageBlobGetPageRangesOptions} [options] Options to the Page Blob Get Ranges operation.
-     * @returns {Promise<PageBlobGetPageRangesResponse>} Response data for the Page Blob Get Ranges operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page ranges.
+     * @param count - Number of bytes to get.
+     * @param options - Options to the Page Blob Get Ranges operation.
+     * @returns Response data for the Page Blob Get Ranges operation.
      */
-    PageBlobClient.prototype.getPageRanges = function (offset, count, options) {
+    async getPageRanges(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_39;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRanges", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRanges({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_39 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_39.message
-                        });
-                        throw e_39;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRanges", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} offset Starting byte position of the page blob
-     * @param {number} count Number of bytes to get ranges diff.
-     * @param {string} prevSnapshot Timestamp of snapshot to retrieve the difference.
-     * @param {PageBlobGetPageRangesDiffOptions} [options] Options to the Page Blob Get Page Ranges Diff operation.
-     * @returns {Promise<PageBlobGetPageRangesDiffResponse>} Response data for the Page Blob Get Page Range Diff operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page blob
+     * @param count - Number of bytes to get ranges diff.
+     * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.
+     * @param options - Options to the Page Blob Get Page Ranges Diff operation.
+     * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiff = function (offset, count, prevSnapshot, options) {
+    async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_40;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRangesDiff", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                prevsnapshot: prevSnapshot,
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_40 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_40.message
-                        });
-                        throw e_40;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRangesDiff", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
      *
-     * @param {number} offset Starting byte position of the page blob
-     * @param {number} count Number of bytes to get ranges diff.
-     * @param {string} prevSnapshotUrl URL of snapshot to retrieve the difference.
-     * @param {PageBlobGetPageRangesDiffOptions} [options] Options to the Page Blob Get Page Ranges Diff operation.
-     * @returns {Promise<PageBlobGetPageRangesDiffResponse>} Response data for the Page Blob Get Page Range Diff operation.
-     * @memberof PageBlobClient
+     * @param offset - Starting byte position of the page blob
+     * @param count - Number of bytes to get ranges diff.
+     * @param prevSnapshotUrl - URL of snapshot to retrieve the difference.
+     * @param options - Options to the Page Blob Get Page Ranges Diff operation.
+     * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiffForManagedDisks = function (offset, count, prevSnapshotUrl, options) {
+    async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_41;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                prevSnapshotUrl: prevSnapshotUrl,
-                                range: rangeToString({ offset: offset, count: count }),
-                                spanOptions: spanOptions
-                            })
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_41 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_41.message
-                        });
-                        throw e_41;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Resizes the page blob to the specified size (which must be a multiple of 512).
      * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties
      *
-     * @param {number} size Target size
-     * @param {PageBlobResizeOptions} [options] Options to the Page Blob Resize operation.
-     * @returns {Promise<PageBlobResizeResponse>} Response data for the Page Blob Resize operation.
-     * @memberof PageBlobClient
+     * @param size - Target size
+     * @param options - Options to the Page Blob Resize operation.
+     * @returns Response data for the Page Blob Resize operation.
      */
-    PageBlobClient.prototype.resize = function (size, options) {
+    async resize(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_42;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-resize", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.resize(size, {
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                encryptionScope: options.encryptionScope,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_42 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_42.message
-                        });
-                        throw e_42;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-resize", options);
+        try {
+            return await this.pageBlobContext.resize(size, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets a page blob's sequence number.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
      *
-     * @param {SequenceNumberActionType} sequenceNumberAction Indicates how the service should modify the blob's sequence number.
-     * @param {number} [sequenceNumber] Required if sequenceNumberAction is max or update
-     * @param {PageBlobUpdateSequenceNumberOptions} [options] Options to the Page Blob Update Sequence Number operation.
-     * @returns {Promise<PageBlobUpdateSequenceNumberResponse>} Response data for the Page Blob Update Sequence Number operation.
-     * @memberof PageBlobClient
+     * @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.
+     * @param sequenceNumber - Required if sequenceNumberAction is max or update
+     * @param options - Options to the Page Blob Update Sequence Number operation.
+     * @returns Response data for the Page Blob Update Sequence Number operation.
      */
-    PageBlobClient.prototype.updateSequenceNumber = function (sequenceNumberAction, sequenceNumber, options) {
+    async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_43;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-updateSequenceNumber", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, {
-                                abortSignal: options.abortSignal,
-                                blobSequenceNumber: sequenceNumber,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_43 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_43.message
-                        });
-                        throw e_43;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-updateSequenceNumber", options);
+        try {
+            return await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, Object.assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
      * The snapshot is copied such that only the differential changes between the previously
@@ -29203,375 +30379,663 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob
      * @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots
      *
-     * @param {string} copySource Specifies the name of the source page blob snapshot. For example,
+     * @param copySource - Specifies the name of the source page blob snapshot. For example,
      *                            https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
-     * @param {PageBlobStartCopyIncrementalOptions} [options] Options to the Page Blob Copy Incremental operation.
-     * @returns {Promise<PageBlobCopyIncrementalResponse>} Response data for the Page Blob Copy Incremental operation.
-     * @memberof PageBlobClient
+     * @param options - Options to the Page Blob Copy Incremental operation.
+     * @returns Response data for the Page Blob Copy Incremental operation.
      */
-    PageBlobClient.prototype.startCopyIncremental = function (copySource, options) {
+    async startCopyIncremental(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, spanOptions, e_44;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("PageBlobClient-startCopyIncremental", options.tracingOptions), span = _b.span, spanOptions = _b.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.copyIncremental(copySource, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_44 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_44.message
-                        });
-                        throw e_44;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-startCopyIncremental", options);
+        try {
+            return await this.pageBlobContext.copyIncremental(copySource, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return PageBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+async function getBodyAsText(batchResponse) {
+    let buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
+    const responseLength = await streamToBuffer2(batchResponse.readableStreamBody, buffer);
+    // Slice the buffer to trim the empty ending.
+    buffer = buffer.slice(0, responseLength);
+    return buffer.toString();
+}
+function utf8ByteLength(str) {
+    return Buffer.byteLength(str);
+}
+
+// Copyright (c) Microsoft Corporation.
+const HTTP_HEADER_DELIMITER = ": ";
+const SPACE_DELIMITER = " ";
+const NOT_FOUND = -1;
 /**
- * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
- *
- * @export
- * @class BlobLeaseClient
+ * Util class for parsing batch response.
  */
-var BlobLeaseClient = /** @class */ (function () {
+class BatchResponseParser {
+    constructor(batchResponse, subRequests) {
+        if (!batchResponse || !batchResponse.contentType) {
+            // In special case(reported), server may return invalid content-type which could not be parsed.
+            throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
+        }
+        if (!subRequests || subRequests.size === 0) {
+            // This should be prevent during coding.
+            throw new RangeError("Invalid state: subRequests is not provided or size is 0.");
+        }
+        this.batchResponse = batchResponse;
+        this.subRequests = subRequests;
+        this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
+        this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;
+        this.batchResponseEnding = `--${this.responseBatchBoundary}--`;
+    }
+    // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
+    async parseBatchResponse() {
+        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
+        // sub request's response.
+        if (this.batchResponse._response.status !== HTTPURLConnection.HTTP_ACCEPTED) {
+            throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);
+        }
+        const responseBodyAsText = await getBodyAsText(this.batchResponse);
+        const subResponses = responseBodyAsText
+            .split(this.batchResponseEnding)[0] // string after ending is useless
+            .split(this.perResponsePrefix)
+            .slice(1); // string before first response boundary is useless
+        const subResponseCount = subResponses.length;
+        // Defensive coding in case of potential error parsing.
+        // Note: subResponseCount == 1 is special case where sub request is invalid.
+        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
+        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
+        if (subResponseCount !== this.subRequests.size && subResponseCount !== 1) {
+            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
+        }
+        const deserializedSubResponses = new Array(subResponseCount);
+        let subResponsesSucceededCount = 0;
+        let subResponsesFailedCount = 0;
+        // Parse sub subResponses.
+        for (let index = 0; index < subResponseCount; index++) {
+            const subResponse = subResponses[index];
+            const deserializedSubResponse = {};
+            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
+            const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);
+            let subRespHeaderStartFound = false;
+            let subRespHeaderEndFound = false;
+            let subRespFailed = false;
+            let contentId = NOT_FOUND;
+            for (const responseLine of responseLines) {
+                if (!subRespHeaderStartFound) {
+                    // Convention line to indicate content ID
+                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
+                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
+                    }
+                    // Http version line with status code indicates the start of sub request's response.
+                    // Example: HTTP/1.1 202 Accepted
+                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
+                        subRespHeaderStartFound = true;
+                        const tokens = responseLine.split(SPACE_DELIMITER);
+                        deserializedSubResponse.status = parseInt(tokens[1]);
+                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
+                    }
+                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
+                }
+                if (responseLine.trim() === "") {
+                    // Sub response's header start line already found, and the first empty line indicates header end line found.
+                    if (!subRespHeaderEndFound) {
+                        subRespHeaderEndFound = true;
+                    }
+                    continue; // Skip empty line
+                }
+                // Note: when code reach here, it indicates subRespHeaderStartFound == true
+                if (!subRespHeaderEndFound) {
+                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
+                        // Defensive coding to prevent from missing valuable lines.
+                        throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);
+                    }
+                    // Parse headers of sub response.
+                    const tokens = responseLine.split(HTTP_HEADER_DELIMITER);
+                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
+                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
+                        deserializedSubResponse.errorCode = tokens[1];
+                        subRespFailed = true;
+                    }
+                }
+                else {
+                    // Assemble body of sub response.
+                    if (!deserializedSubResponse.bodyAsText) {
+                        deserializedSubResponse.bodyAsText = "";
+                    }
+                    deserializedSubResponse.bodyAsText += responseLine;
+                }
+            } // Inner for end
+            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
+            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
+            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
+            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
+            if (contentId !== NOT_FOUND &&
+                Number.isInteger(contentId) &&
+                contentId >= 0 &&
+                contentId < this.subRequests.size &&
+                deserializedSubResponses[contentId] === undefined) {
+                deserializedSubResponse._request = this.subRequests.get(contentId);
+                deserializedSubResponses[contentId] = deserializedSubResponse;
+            }
+            else {
+                logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);
+            }
+            if (subRespFailed) {
+                subResponsesFailedCount++;
+            }
+            else {
+                subResponsesSucceededCount++;
+            }
+        }
+        return {
+            subResponses: deserializedSubResponses,
+            subResponsesSucceededCount: subResponsesSucceededCount,
+            subResponsesFailedCount: subResponsesFailedCount
+        };
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+var MutexLockStatus;
+(function (MutexLockStatus) {
+    MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
+    MutexLockStatus[MutexLockStatus["UNLOCKED"] = 1] = "UNLOCKED";
+})(MutexLockStatus || (MutexLockStatus = {}));
+/**
+ * An async mutex lock.
+ */
+class Mutex {
     /**
-     * Creates an instance of BlobLeaseClient.
-     * @param {(ContainerClient | BlobClient)} client The client to make the lease operation requests.
-     * @param {string} leaseId Initial proposed lease id.
-     * @memberof BlobLeaseClient
+     * Lock for a specific key. If the lock has been acquired by another customer, then
+     * will wait until getting the lock.
+     *
+     * @param key - lock key
      */
-    function BlobLeaseClient(client, leaseId) {
-        var clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
-        this._url = client.url;
-        if (client instanceof ContainerClient) {
-            this._isContainer = true;
-            this._containerOrBlobOperation = new Container(clientContext);
+    static async lock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {
+                this.keys[key] = MutexLockStatus.LOCKED;
+                resolve();
+            }
+            else {
+                this.onUnlockEvent(key, () => {
+                    this.keys[key] = MutexLockStatus.LOCKED;
+                    resolve();
+                });
+            }
+        });
+    }
+    /**
+     * Unlock a key.
+     *
+     * @param key -
+     */
+    static async unlock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === MutexLockStatus.LOCKED) {
+                this.emitUnlockEvent(key);
+            }
+            delete this.keys[key];
+            resolve();
+        });
+    }
+    static onUnlockEvent(key, handler) {
+        if (this.listeners[key] === undefined) {
+            this.listeners[key] = [handler];
         }
         else {
-            this._isContainer = false;
-            this._containerOrBlobOperation = new Blob$1(clientContext);
+            this.listeners[key].push(handler);
         }
-        if (!leaseId) {
-            leaseId = coreHttp.generateUuid();
-        }
-        this._leaseId = leaseId;
     }
-    Object.defineProperty(BlobLeaseClient.prototype, "leaseId", {
-        /**
-         * Gets the lease Id.
-         *
-         * @readonly
-         * @memberof BlobLeaseClient
-         * @type {string}
-         */
-        get: function () {
-            return this._leaseId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobLeaseClient.prototype, "url", {
-        /**
-         * Gets the url.
-         *
-         * @readonly
-         * @memberof BlobLeaseClient
-         * @type {string}
-         */
-        get: function () {
-            return this._url;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    /**
-     * Establishes and manages a lock on a container for delete operations, or on a blob
-     * for write and delete operations.
-     * The lock duration can be 15 to 60 seconds, or can be infinite.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {number} duration Must be between 15 to 60 seconds, or infinite (-1)
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for acquire lease operation.
-     * @memberof BlobLeaseClient
-     */
-    BlobLeaseClient.prototype.acquireLease = function (duration, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_45;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-acquireLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.acquireLease({
-                                abortSignal: options.abortSignal,
-                                duration: duration,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                proposedLeaseId: this._leaseId,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_45 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_45.message
-                        });
-                        throw e_45;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    static emitUnlockEvent(key) {
+        if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
+            const handler = this.listeners[key].shift();
+            setImmediate(() => {
+                handler.call(this);
             });
-        });
-    };
+        }
+    }
+}
+Mutex.keys = {};
+Mutex.listeners = {};
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A BlobBatch represents an aggregated set of operations on blobs.
+ * Currently, only `delete` and `setAccessTier` are supported.
+ */
+class BlobBatch {
+    constructor() {
+        this.batch = "batch";
+        this.batchRequest = new InnerBatchRequest();
+    }
     /**
-     * To change the ID of the lease.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {string} proposedLeaseId the proposed new lease Id.
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for change lease operation.
-     * @memberof BlobLeaseClient
+     * Get the value of Content-Type for a batch request.
+     * The value must be multipart/mixed with a batch boundary.
+     * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
      */
-    BlobLeaseClient.prototype.changeLease = function (proposedLeaseId, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, response, e_46;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-changeLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _h.sent();
-                        this._leaseId = proposedLeaseId;
-                        return [2 /*return*/, response];
-                    case 3:
-                        e_46 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_46.message
-                        });
-                        throw e_46;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    getMultiPartContentType() {
+        return this.batchRequest.getMultipartContentType();
+    }
     /**
-     * To free the lease if it is no longer needed so that another client may
-     * immediately acquire a lease against the container or the blob.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {LeaseOperationOptions} [options={}] option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for release lease operation.
-     * @memberof BlobLeaseClient
+     * Get assembled HTTP request body for sub requests.
      */
-    BlobLeaseClient.prototype.releaseLease = function (options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_47;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-releaseLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.releaseLease(this._leaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_47 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_47.message
-                        });
-                        throw e_47;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    getHttpRequestBody() {
+        return this.batchRequest.getHttpRequestBody();
+    }
     /**
-     * To renew the lease.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @param {LeaseOperationOptions} [options={}] Optional option to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for renew lease operation.
-     * @memberof BlobLeaseClient
+     * Get sub requests that are added into the batch request.
      */
-    BlobLeaseClient.prototype.renewLease = function (options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, e_48;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-renewLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.renewLease(this._leaseId, {
-                                abortSignal: options.abortSignal,
-                                modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_48 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_48.message
-                        });
-                        throw e_48;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    getSubRequests() {
+        return this.batchRequest.getSubRequests();
+    }
+    async addSubRequestInternal(subRequest, assembleSubRequestFunc) {
+        await Mutex.lock(this.batch);
+        try {
+            this.batchRequest.preAddSubRequest(subRequest);
+            await assembleSubRequestFunc();
+            this.batchRequest.postAddSubRequest(subRequest);
+        }
+        finally {
+            await Mutex.unlock(this.batch);
+        }
+    }
+    setBatchType(batchType) {
+        if (!this.batchType) {
+            this.batchType = batchType;
+        }
+        if (this.batchType !== batchType) {
+            throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);
+        }
+    }
+    async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {
+        let url;
+        let credential;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
+                credentialOrOptions instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrOptions))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            options = credentialOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchDeleteRequest-addSubRequest", options);
+        try {
+            this.setBatchType("delete");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
+        let url;
+        let credential;
+        let tier;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
+                credentialOrTier instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrTier))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrTier;
+            tier = tierOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            tier = credentialOrTier;
+            options = tierOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchSetTierRequest-addSubRequest", options);
+        try {
+            this.setBatchType("setAccessTier");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);
+            });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+/**
+ * Inner batch request class which is responsible for assembling and serializing sub requests.
+ * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
+ */
+class InnerBatchRequest {
+    constructor() {
+        this.operationCount = 0;
+        this.body = "";
+        const tempGuid = coreHttp.generateUuid();
+        // batch_{batchid}
+        this.boundary = `batch_${tempGuid}`;
+        // --batch_{batchid}
+        // Content-Type: application/http
+        // Content-Transfer-Encoding: binary
+        this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;
+        // multipart/mixed; boundary=batch_{batchid}
+        this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;
+        // --batch_{batchid}--
+        this.batchRequestEnding = `--${this.boundary}--`;
+        this.subRequests = new Map();
+    }
     /**
-     * To end the lease but ensure that another client cannot acquire a new lease
-     * until the current lease period has expired.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
-     * and
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob
-     *
-     * @static
-     * @param {number} breakPeriod Break period
-     * @param {LeaseOperationOptions} [options={}] Optional options to configure lease management operations.
-     * @returns {Promise<LeaseOperationResponse>} Response data for break lease operation.
-     * @memberof BlobLeaseClient
+     * Create pipeline to assemble sub requests. The idea here is to use existing
+     * credential and serialization/deserialization components, with additional policies to
+     * filter unnecessary headers, assemble sub requests into request's body
+     * and intercept request from going to wire.
+     * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
      */
-    BlobLeaseClient.prototype.breakLease = function (breakPeriod, options) {
-        var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, spanOptions, operationOptions, e_49;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-breakLease", options.tracingOptions), span = _g.span, spanOptions = _g.spanOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) || ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        operationOptions = {
-                            abortSignal: options.abortSignal,
-                            breakPeriod: breakPeriod,
-                            modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }),
-                            spanOptions: spanOptions
-                        };
-                        return [4 /*yield*/, this._containerOrBlobOperation.breakLease(operationOptions)];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_49 = _h.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_49.message
-                        });
-                        throw e_49;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    createPipeline(credential) {
+        const isAnonymousCreds = credential instanceof AnonymousCredential;
+        const policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
+        const factories = new Array(policyFactoryLength);
+        factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
+        factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
+        if (!isAnonymousCreds) {
+            factories[2] = coreHttp.isTokenCredential(credential)
+                ? attachCredential(coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes), credential)
+                : credential;
+        }
+        factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
+        return new Pipeline(factories, {});
+    }
+    appendSubRequestToBody(request) {
+        // Start to assemble sub request
+        this.body += [
+            this.subRequestPrefix,
+            `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`,
+            "",
+            `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}` // sub request start line with method
+        ].join(HTTP_LINE_ENDING);
+        for (const header of request.headers.headersArray()) {
+            this.body += `${header.name}: ${header.value}${HTTP_LINE_ENDING}`;
+        }
+        this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
+        // No body to assemble for current batch request support
+        // End to assemble sub request
+    }
+    preAddSubRequest(subRequest) {
+        if (this.operationCount >= BATCH_MAX_REQUEST) {
+            throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);
+        }
+        // Fast fail if url for sub request is invalid
+        const path = getURLPath(subRequest.url);
+        if (!path || path === "") {
+            throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);
+        }
+    }
+    postAddSubRequest(subRequest) {
+        this.subRequests.set(this.operationCount, subRequest);
+        this.operationCount++;
+    }
+    // Return the http request body with assembling the ending line to the sub request body.
+    getHttpRequestBody() {
+        return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;
+    }
+    getMultipartContentType() {
+        return this.multipartContentType;
+    }
+    getSubRequests() {
+        return this.subRequests;
+    }
+}
+class BatchRequestAssemblePolicy extends coreHttp.BaseRequestPolicy {
+    constructor(batchRequest, nextPolicy, options) {
+        super(nextPolicy, options);
+        this.dummyResponse = {
+            request: new coreHttp.WebResource(),
+            status: 200,
+            headers: new coreHttp.HttpHeaders()
+        };
+        this.batchRequest = batchRequest;
+    }
+    async sendRequest(request) {
+        await this.batchRequest.appendSubRequestToBody(request);
+        return this.dummyResponse; // Intercept request from going to wire
+    }
+}
+class BatchRequestAssemblePolicyFactory {
+    constructor(batchRequest) {
+        this.batchRequest = batchRequest;
+    }
+    create(nextPolicy, options) {
+        return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
+    }
+}
+class BatchHeaderFilterPolicy extends coreHttp.BaseRequestPolicy {
+    // The base class has a protected constructor. Adding a public one to enable constructing of this class.
+    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
+    }
+    async sendRequest(request) {
+        let xMsHeaderName = "";
+        for (const header of request.headers.headersArray()) {
+            if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
+                xMsHeaderName = header.name;
+            }
+        }
+        if (xMsHeaderName !== "") {
+            request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+class BatchHeaderFilterPolicyFactory {
+    create(nextPolicy, options) {
+        return new BatchHeaderFilterPolicy(nextPolicy, options);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.
+ *
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
+ */
+class BlobBatchClient {
+    constructor(url, credentialOrPipeline, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        if (isPipelineLike(credentialOrPipeline)) {
+            pipeline = credentialOrPipeline;
+        }
+        else if (!credentialOrPipeline) {
+            // no credential provided
+            pipeline = newPipeline(new AnonymousCredential(), options);
+        }
+        else {
+            pipeline = newPipeline(credentialOrPipeline, options);
+        }
+        const storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
+        const path = getURLPath(url);
+        if (path && path !== "/") {
+            // Container scoped.
+            this.serviceOrContainerContext = new Container(storageClientContext);
+        }
+        else {
+            this.serviceOrContainerContext = new Service(storageClientContext);
+        }
+    }
+    /**
+     * Creates a {@link BlobBatch}.
+     * A BlobBatch represents an aggregated set of operations on blobs.
+     */
+    createBatch() {
+        return new BlobBatch();
+    }
+    async deleteBlobs(urlsOrBlobClients, credentialOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);
+            }
+            else {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);
+            }
+            else {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    /**
+     * Submit batch request which consists of multiple subrequests.
+     *
+     * Get `blobBatchClient` and other details before running the snippets.
+     * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`
+     *
+     * Example usage:
+     *
+     * ```js
+     * let batchRequest = new BlobBatch();
+     * await batchRequest.deleteBlob(urlInString0, credential0);
+     * await batchRequest.deleteBlob(urlInString1, credential1, {
+     *  deleteSnapshots: "include"
+     * });
+     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
+     * console.log(batchResp.subResponsesSucceededCount);
+     * ```
+     *
+     * Example using a lease:
+     *
+     * ```js
+     * let batchRequest = new BlobBatch();
+     * await batchRequest.setBlobAccessTier(blockBlobClient0, "Cool");
+     * await batchRequest.setBlobAccessTier(blockBlobClient1, "Cool", {
+     *  conditions: { leaseId: leaseId }
+     * });
+     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
+     * console.log(batchResp.subResponsesSucceededCount);
+     * ```
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
+     *
+     * @param batchRequest - A set of Delete or SetTier operations.
+     * @param options -
+     */
+    async submitBatch(batchRequest, options = {}) {
+        if (!batchRequest || batchRequest.getSubRequests().size === 0) {
+            throw new RangeError("Batch request should contain one or more sub requests.");
+        }
+        const { span, updatedOptions } = createSpan("BlobBatchClient-submitBatch", options);
+        try {
+            const batchRequestBody = batchRequest.getHttpRequestBody();
+            // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.
+            const rawBatchResponse = await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).
+            const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
+            const responseSummary = await batchResponseParser.parseBatchResponse();
+            const res = {
+                _response: rawBatchResponse._response,
+                contentType: rawBatchResponse.contentType,
+                errorCode: rawBatchResponse.errorCode,
+                requestId: rawBatchResponse.requestId,
+                clientRequestId: rawBatchResponse.clientRequestId,
+                version: rawBatchResponse.version,
+                subResponses: responseSummary.subResponses,
+                subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
+                subResponsesFailedCount: responseSummary.subResponsesFailedCount
+            };
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobLeaseClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
+
 /**
  * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
- *
- * @export
- * @class ContainerClient
  */
-var ContainerClient = /** @class */ (function (_super) {
-    tslib.__extends(ContainerClient, _super);
-    function ContainerClient(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
-        var _this = this;
-        var pipeline;
-        var url;
+class ContainerClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        let url;
         options = options || {};
-        if (credentialOrPipelineOrContainerName instanceof Pipeline) {
+        if (isPipelineLike(credentialOrPipelineOrContainerName)) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
             pipeline = credentialOrPipelineOrContainerName;
@@ -29593,11 +31057,11 @@ var ContainerClient = /** @class */ (function (_super) {
         else if (credentialOrPipelineOrContainerName &&
             typeof credentialOrPipelineOrContainerName === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -29617,29 +31081,23 @@ var ContainerClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName parameter");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this._containerName = _this.getContainerNameFromUrl();
-        _this.containerContext = new Container(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this._containerName = this.getContainerNameFromUrl();
+        this.containerContext = new Container(this.storageClientContext);
+    }
+    /**
+     * The name of the container.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(ContainerClient.prototype, "containerName", {
-        /**
-         * The name of the container.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, the operation fails.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
      *
-     * @param {ContainerCreateOptions} [options] Options to Container Create operation.
-     * @returns {Promise<ContainerCreateResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Create operation.
+     *
      *
      * Example usage:
      *
@@ -29649,85 +31107,57 @@ var ContainerClient = /** @class */ (function (_super) {
      * console.log("Container was created successfully", createContainerResponse.requestId);
      * ```
      */
-    ContainerClient.prototype.create = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_50;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-create", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.create(tslib.__assign(tslib.__assign({}, options), { spanOptions: spanOptions }))];
-                    case 2: 
-                    // Spread operator in destructuring assignments,
-                    // this will filter out unwanted properties from the response object into result object
-                    return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_50 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_50.message
-                        });
-                        throw e_50;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-create", options);
+        try {
+            // Spread operator in destructuring assignments,
+            // this will filter out unwanted properties from the response object into result object
+            return await this.containerContext.create(Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, it is not changed.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container
      *
-     * @param {ContainerCreateOptions} [options]
-     * @returns {Promise<ContainerCreateIfNotExistsResponse>}
-     * @memberof ContainerClient
+     * @param options -
      */
-    ContainerClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_51;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-createIfNotExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_51 = _d.sent();
-                        if (((_a = e_51.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
-                            span.setStatus({
-                                code: api.CanonicalCode.ALREADY_EXISTS,
-                                message: "Expected exception when creating a container only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_51.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_51.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_51.message
-                        });
-                        throw e_51;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-createIfNotExists", options);
+        try {
+            const res = await this.create(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a container only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure container resource represented by this client exists; false otherwise.
      *
@@ -29735,76 +31165,57 @@ var ContainerClient = /** @class */ (function (_super) {
      * applications. Vice versa new containers with the same name might be added by other clients or
      * applications after this function completes.
      *
-     * @param {ContainerExistsOptions} [options={}]
-     * @returns {Promise<boolean>}
-     * @memberof ContainerClient
+     * @param options -
      */
-    ContainerClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_52;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-exists", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions })
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_52 = _b.sent();
-                        if (e_52.statusCode === 404) {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when checking container existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_52.message
-                        });
-                        throw e_52;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-exists", options);
+        try {
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking container existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a {@link BlobClient}
      *
-     * @param {string} blobName A blob name
-     * @returns {BlobClient} A new BlobClient object for the given blob name.
-     * @memberof ContainerClient
+     * @param blobName - A blob name
+     * @returns A new BlobClient object for the given blob name.
      */
-    ContainerClient.prototype.getBlobClient = function (blobName) {
+    getBlobClient(blobName) {
         return new BlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates an {@link AppendBlobClient}
      *
-     * @param {string} blobName An append blob name
-     * @returns {AppendBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - An append blob name
      */
-    ContainerClient.prototype.getAppendBlobClient = function (blobName) {
+    getAppendBlobClient(blobName) {
         return new AppendBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link BlockBlobClient}
      *
-     * @param {string} blobName A block blob name
-     * @returns {BlockBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - A block blob name
+     *
      *
      * Example usage:
      *
@@ -29815,19 +31226,17 @@ var ContainerClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    ContainerClient.prototype.getBlockBlobClient = function (blobName) {
+    getBlockBlobClient(blobName) {
         return new BlockBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link PageBlobClient}
      *
-     * @param {string} blobName A page blob name
-     * @returns {PageBlobClient}
-     * @memberof ContainerClient
+     * @param blobName - A page blob name
      */
-    ContainerClient.prototype.getPageBlobClient = function (blobName) {
+    getPageBlobClient(blobName) {
         return new PageBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Returns all user-defined metadata and system properties for the specified
      * container. The data returned does not include the container's list of blobs.
@@ -29838,134 +31247,86 @@ var ContainerClient = /** @class */ (function (_super) {
      * the `listContainers` method of {@link BlobServiceClient} using the `includeMetadata` option, which
      * will retain their original casing.
      *
-     * @param {ContainerGetPropertiesOptions} [options] Options to Container Get Properties operation.
-     * @returns {Promise<ContainerGetPropertiesResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Get Properties operation.
      */
-    ContainerClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_53;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getProperties(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal }, options.conditions), { spanOptions: spanOptions }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_53 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_53.message
-                        });
-                        throw e_53;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getProperties", options);
+        try {
+            return await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion. The container and any blobs
      * contained within it are later deleted during garbage collection.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
      *
-     * @param {ContainerDeleteMethodOptions} [options] Options to Container Delete operation.
-     * @returns {Promise<ContainerDeleteResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.delete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_54;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-delete", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.deleteMethod({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_54 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_54.message
-                        });
-                        throw e_54;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async delete(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-delete", options);
+        try {
+            return await this.containerContext.delete(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion if it exists. The container and any blobs
      * contained within it are later deleted during garbage collection.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
      *
-     * @param {ContainerDeleteMethodOptions} [options] Options to Container Delete operation.
-     * @returns {Promise<ContainerDeleteIfExistsResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, spanOptions, res, e_55;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-deleteIfExists", options.tracingOptions), span = _c.span, spanOptions = _c.spanOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_55 = _d.sent();
-                        if (((_a = e_55.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
-                            span.setStatus({
-                                code: api.CanonicalCode.NOT_FOUND,
-                                message: "Expected exception when deleting a container only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_55.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_55.response })];
-                        }
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_55.message
-                        });
-                        throw e_55;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a container only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets one or more user-defined name-value pairs for the specified container.
      *
@@ -29974,52 +31335,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata
      *
-     * @param {Metadata} [metadata] Replace existing metadata with this value.
+     * @param metadata - Replace existing metadata with this value.
      *                            If no value provided the existing metadata will be removed.
-     * @param {ContainerSetMetadataOptions} [options] Options to Container Set Metadata operation.
-     * @returns {Promise<ContainerSetMetadataResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Set Metadata operation.
      */
-    ContainerClient.prototype.setMetadata = function (metadata, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_56;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (options.conditions.ifUnmodifiedSince) {
-                            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
-                        }
-                        _a = createSpan("ContainerClient-setMetadata", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.setMetadata({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                metadata: metadata,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_56 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_56.message
-                        });
-                        throw e_56;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setMetadata(metadata, options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        if (options.conditions.ifUnmodifiedSince) {
+            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-setMetadata", options);
+        try {
+            return await this.containerContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the permissions for the specified container. The permissions indicate
      * whether container data may be accessed publicly.
@@ -30029,78 +31370,58 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-acl
      *
-     * @param {ContainerGetAccessPolicyOptions} [options] Options to Container Get Access Policy operation.
-     * @returns {Promise<ContainerGetAccessPolicyResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to Container Get Access Policy operation.
      */
-    ContainerClient.prototype.getAccessPolicy = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, res, _i, response_1, identifier, accessPolicy, e_57;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getAccessPolicy", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getAccessPolicy({
-                                abortSignal: options.abortSignal,
-                                leaseAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _b.sent();
-                        res = {
-                            _response: response._response,
-                            blobPublicAccess: response.blobPublicAccess,
-                            date: response.date,
-                            etag: response.etag,
-                            errorCode: response.errorCode,
-                            lastModified: response.lastModified,
-                            requestId: response.requestId,
-                            clientRequestId: response.clientRequestId,
-                            signedIdentifiers: [],
-                            version: response.version
-                        };
-                        for (_i = 0, response_1 = response; _i < response_1.length; _i++) {
-                            identifier = response_1[_i];
-                            accessPolicy = undefined;
-                            if (identifier.accessPolicy) {
-                                accessPolicy = {
-                                    permissions: identifier.accessPolicy.permissions
-                                };
-                                if (identifier.accessPolicy.expiresOn) {
-                                    accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
-                                }
-                                if (identifier.accessPolicy.startsOn) {
-                                    accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
-                                }
-                            }
-                            res.signedIdentifiers.push({
-                                accessPolicy: accessPolicy,
-                                id: identifier.id
-                            });
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_57 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_57.message
-                        });
-                        throw e_57;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
+    async getAccessPolicy(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getAccessPolicy", options);
+        try {
+            const response = await this.containerContext.getAccessPolicy(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const res = {
+                _response: response._response,
+                blobPublicAccess: response.blobPublicAccess,
+                date: response.date,
+                etag: response.etag,
+                errorCode: response.errorCode,
+                lastModified: response.lastModified,
+                requestId: response.requestId,
+                clientRequestId: response.clientRequestId,
+                signedIdentifiers: [],
+                version: response.version
+            };
+            for (const identifier of response) {
+                let accessPolicy = undefined;
+                if (identifier.accessPolicy) {
+                    accessPolicy = {
+                        permissions: identifier.accessPolicy.permissions
+                    };
+                    if (identifier.accessPolicy.expiresOn) {
+                        accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
+                    }
+                    if (identifier.accessPolicy.startsOn) {
+                        accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
+                    }
                 }
+                res.signedIdentifiers.push({
+                    accessPolicy,
+                    id: identifier.id
+                });
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the permissions for the specified container. The permissions indicate
      * whether blobs in a container may be accessed publicly.
@@ -30114,74 +31435,51 @@ var ContainerClient = /** @class */ (function (_super) {
      * fail with status code 403 (Forbidden), until the access policy becomes active.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-acl
      *
-     * @param {PublicAccessType} [access] The level of public access to data in the container.
-     * @param {SignedIdentifier[]} [containerAcl] Array of elements each having a unique Id and details of the access policy.
-     * @param {ContainerSetAccessPolicyOptions} [options] Options to Container Set Access Policy operation.
-     * @returns {Promise<ContainerSetAccessPolicyResponse>}
-     * @memberof ContainerClient
+     * @param access - The level of public access to data in the container.
+     * @param containerAcl - Array of elements each having a unique Id and details of the access policy.
+     * @param options - Options to Container Set Access Policy operation.
      */
-    ContainerClient.prototype.setAccessPolicy = function (access, containerAcl, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, acl, _i, _b, identifier, e_58;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _a = createSpan("ContainerClient-setAccessPolicy", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        acl = [];
-                        for (_i = 0, _b = containerAcl || []; _i < _b.length; _i++) {
-                            identifier = _b[_i];
-                            acl.push({
-                                accessPolicy: {
-                                    expiresOn: identifier.accessPolicy.expiresOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
-                                        : "",
-                                    permissions: identifier.accessPolicy.permissions,
-                                    startsOn: identifier.accessPolicy.startsOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
-                                        : ""
-                                },
-                                id: identifier.id
-                            });
-                        }
-                        return [4 /*yield*/, this.containerContext.setAccessPolicy({
-                                abortSignal: options.abortSignal,
-                                access: access,
-                                containerAcl: acl,
-                                leaseAccessConditions: options.conditions,
-                                modifiedAccessConditions: options.conditions,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_58 = _c.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_58.message
-                        });
-                        throw e_58;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setAccessPolicy(access, containerAcl, options = {}) {
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("ContainerClient-setAccessPolicy", options);
+        try {
+            const acl = [];
+            for (const identifier of containerAcl || []) {
+                acl.push({
+                    accessPolicy: {
+                        expiresOn: identifier.accessPolicy.expiresOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
+                            : "",
+                        permissions: identifier.accessPolicy.permissions,
+                        startsOn: identifier.accessPolicy.startsOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
+                            : ""
+                    },
+                    id: identifier.id
+                });
+            }
+            return await this.containerContext.setAccessPolicy(Object.assign({ abortSignal: options.abortSignal, access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the container.
      *
-     * @param {string} [proposeLeaseId] Initial proposed lease Id.
-     * @returns {BlobLeaseClient} A new BlobLeaseClient object for managing leases on the container.
-     * @memberof ContainerClient
+     * @param proposeLeaseId - Initial proposed lease Id.
+     * @returns A new BlobLeaseClient object for managing leases on the container.
      */
-    ContainerClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      *
@@ -30196,49 +31494,35 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
      *
-     * @param {string} blobName Name of the block blob to create or update.
-     * @param {HttpRequestBody} body Blob, string, ArrayBuffer, ArrayBufferView or a function
+     * @param blobName - Name of the block blob to create or update.
+     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function
      *                               which returns a new Readable stream whose offset is from data source beginning.
-     * @param {number} contentLength Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
+     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a
      *                               string including non non-Base64/Hex-encoded characters.
-     * @param {BlockBlobUploadOptions} [options] Options to configure the Block Blob Upload operation.
-     * @returns {Promise<{ blockBlobClient: BlockBlobClient; response: BlockBlobUploadResponse }>} Block Blob upload response data and the corresponding BlockBlobClient instance.
-     * @memberof ContainerClient
+     * @param options - Options to configure the Block Blob Upload operation.
+     * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.
      */
-    ContainerClient.prototype.uploadBlockBlob = function (blobName, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blockBlobClient, response, e_59;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-uploadBlockBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blockBlobClient = this.getBlockBlobClient(blobName);
-                        return [4 /*yield*/, blockBlobClient.upload(body, contentLength, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        response = _b.sent();
-                        return [2 /*return*/, {
-                                blockBlobClient: blockBlobClient,
-                                response: response
-                            }];
-                    case 3:
-                        e_59 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_59.message
-                        });
-                        throw e_59;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBlockBlob(blobName, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-uploadBlockBlob", options);
+        try {
+            const blockBlobClient = this.getBlockBlobClient(blobName);
+            const response = await blockBlobClient.upload(body, contentLength, updatedOptions);
+            return {
+                blockBlobClient,
+                response
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -30246,43 +31530,30 @@ var ContainerClient = /** @class */ (function (_super) {
      * Blob operation.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob
      *
-     * @param {string} blobName
-     * @param {ContainerDeleteBlobOptions} [options] Options to Blob Delete operation.
-     * @returns {Promise<BlobDeleteResponse>} Block blob deletion response data.
-     * @memberof ContainerClient
+     * @param blobName -
+     * @param options - Options to Blob Delete operation.
+     * @returns Block blob deletion response data.
      */
-    ContainerClient.prototype.deleteBlob = function (blobName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, blobClient, e_60;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-deleteBlob", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blobClient = this.getBlobClient(blobName);
-                        if (options.versionId) {
-                            blobClient = blobClient.withVersion(options.versionId);
-                        }
-                        return [4 /*yield*/, blobClient.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_60 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_60.message
-                        });
-                        throw e_60;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteBlob(blobName, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteBlob", options);
+        try {
+            let blobClient = this.getBlobClient(blobName);
+            if (options.versionId) {
+                blobClient = blobClient.withVersion(options.versionId);
+            }
+            return await blobClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobFlatSegment returns a single segment of blobs starting from the
      * specified Marker. Use an empty Marker to start enumeration from the beginning.
@@ -30290,45 +31561,30 @@ var ContainerClient = /** @class */ (function (_super) {
      * (passing the the previously-returned Marker) to get the next segment.
      * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
      *
-     * @param {string} [marker] A string value that identifies the portion of the list to be returned with the next list operation.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to Container List Blob Flat Segment operation.
-     * @returns {Promise<ContainerListBlobFlatSegmentResponse>}
-     * @memberof ContainerClient
+     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
+     * @param options - Options to Container List Blob Flat Segment operation.
      */
-    ContainerClient.prototype.listBlobFlatSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, wrappedResponse, e_61;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobFlatSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobFlatSegment(tslib.__assign(tslib.__assign({ marker: marker }, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_61 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_61.message
-                        });
-                        throw e_61;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobFlatSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobFlatSegment", options);
+        try {
+            const response = await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobHierarchySegment returns a single segment of blobs starting from
      * the specified Marker. Use an empty Marker to start enumeration from the
@@ -30336,139 +31592,79 @@ var ContainerClient = /** @class */ (function (_super) {
      * again (passing the the previously-returned Marker) to get the next segment.
      * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs
      *
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {string} [marker] A string value that identifies the portion of the list to be returned with the next list operation.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to Container List Blob Hierarchy Segment operation.
-     * @returns {Promise<ContainerListBlobHierarchySegmentResponse>}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
+     * @param options - Options to Container List Blob Hierarchy Segment operation.
      */
-    ContainerClient.prototype.listBlobHierarchySegment = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, wrappedResponse, e_62;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobHierarchySegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobHierarchySegment(delimiter, tslib.__assign(tslib.__assign({ marker: marker }, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_62 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_62.message
-                        });
-                        throw e_62;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobHierarchySegment(delimiter, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobHierarchySegment", options);
+        try {
+            const response = await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse
      *
-     * @private
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
      *                          operation returns the ContinuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
      *                          with the current page. The ContinuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<ContainerListBlobFlatSegmentResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listBlobsFlatSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobFlatSegment(marker, options))];
-                    case 2:
-                        listBlobsFlatSegmentResponse = _a.sent();
-                        marker = listBlobsFlatSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsFlatSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listBlobsFlatSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsFlatSegmentResponse = yield tslib.__await(this.listBlobFlatSegment(marker, options));
+                    marker = listBlobsFlatSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsFlatSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator of {@link BlobItem} objects
      *
-     * @private
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<BlobItem>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, listBlobsFlatSegmentResponse, e_63_1;
-            var e_63, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        listBlobsFlatSegmentResponse = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_63_1 = _d.sent();
-                        e_63 = { error: e_63_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_63) throw e_63.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsFlatSegmentResponse = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs
      * under the specified account.
@@ -30536,15 +31732,11 @@ var ContainerClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {ContainerListBlobsOptions} [options={}] Options to list blobs.
-     * @returns {PagedAsyncIterableIterator<BlobItem, ContainerListBlobFlatSegmentResponse>} An asyncIterableIterator that supports paging.
-     * @memberof ContainerClient
+     * @param options - Options to list blobs.
+     * @returns An asyncIterableIterator that supports paging.
      */
-    ContainerClient.prototype.listBlobsFlat = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
-        var include = [];
+    listBlobsFlat(options = {}) {
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -30566,154 +31758,100 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.includeTags) {
             include.push("tags");
         }
+        if (options.includeDeletedWithVersions) {
+            include.push("deletedwithversions");
+        }
+        if (options.includeImmutabilityPolicy) {
+            include.push("immutabilitypolicy");
+        }
+        if (options.includeLegalHold) {
+            include.push("legalhold");
+        }
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blobs
-        var iter = this.listItems(updatedOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const iter = this.listItems(updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse
      *
-     * @private
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
      *                          operation returns the ContinuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
      *                          with the current page. The ContinuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<ContainerListBlobHierarchySegmentResponse>}
-     * @memberof ContainerClient
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listHierarchySegments = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listHierarchySegments_1() {
-            var listBlobsHierarchySegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options))];
-                    case 2:
-                        listBlobsHierarchySegmentResponse = _a.sent();
-                        marker = listBlobsHierarchySegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsHierarchySegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listHierarchySegments(delimiter, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listHierarchySegments_1() {
+            let listBlobsHierarchySegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsHierarchySegmentResponse = yield tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options));
+                    marker = listBlobsHierarchySegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsHierarchySegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.
      *
-     * @private
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {ContainerListBlobsSegmentOptions} [options] Options to list blobs operation.
-     * @returns {AsyncIterableIterator<{ kind: "prefix" } & BlobPrefix | { kind: "blob" } & BlobItem>}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItemsByHierarchy = function (delimiter, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItemsByHierarchy_1() {
-            var marker, _a, _b, listBlobsHierarchySegmentResponse, segment, _i, _c, prefix, _d, _e, blob, e_64_1;
-            var e_64, _f;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        _g.trys.push([0, 14, 15, 20]);
-                        _a = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options));
-                        _g.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _g.sent(), !_b.done)) return [3 /*break*/, 13];
-                        listBlobsHierarchySegmentResponse = _b.value;
-                        segment = listBlobsHierarchySegmentResponse.segment;
-                        if (!segment.blobPrefixes) return [3 /*break*/, 7];
-                        _i = 0, _c = segment.blobPrefixes;
-                        _g.label = 3;
-                    case 3:
-                        if (!(_i < _c.length)) return [3 /*break*/, 7];
-                        prefix = _c[_i];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "prefix" }, prefix))];
-                    case 4: return [4 /*yield*/, _g.sent()];
-                    case 5:
-                        _g.sent();
-                        _g.label = 6;
-                    case 6:
-                        _i++;
-                        return [3 /*break*/, 3];
-                    case 7:
-                        _d = 0, _e = segment.blobItems;
-                        _g.label = 8;
-                    case 8:
-                        if (!(_d < _e.length)) return [3 /*break*/, 12];
-                        blob = _e[_d];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "blob" }, blob))];
-                    case 9: return [4 /*yield*/, _g.sent()];
-                    case 10:
-                        _g.sent();
-                        _g.label = 11;
-                    case 11:
-                        _d++;
-                        return [3 /*break*/, 8];
-                    case 12: return [3 /*break*/, 1];
-                    case 13: return [3 /*break*/, 20];
-                    case 14:
-                        e_64_1 = _g.sent();
-                        e_64 = { error: e_64_1 };
-                        return [3 /*break*/, 20];
-                    case 15:
-                        _g.trys.push([15, , 18, 19]);
-                        if (!(_b && !_b.done && (_f = _a.return))) return [3 /*break*/, 17];
-                        return [4 /*yield*/, tslib.__await(_f.call(_a))];
-                    case 16:
-                        _g.sent();
-                        _g.label = 17;
-                    case 17: return [3 /*break*/, 19];
-                    case 18:
-                        if (e_64) throw e_64.error;
-                        return [7 /*endfinally*/];
-                    case 19: return [7 /*endfinally*/];
-                    case 20: return [2 /*return*/];
+    listItemsByHierarchy(delimiter, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItemsByHierarchy_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsHierarchySegmentResponse = _c.value;
+                    const segment = listBlobsHierarchySegmentResponse.segment;
+                    if (segment.blobPrefixes) {
+                        for (const prefix of segment.blobPrefixes) {
+                            yield yield tslib.__await(Object.assign({ kind: "prefix" }, prefix));
+                        }
+                    }
+                    for (const blob of segment.blobItems) {
+                        yield yield tslib.__await(Object.assign({ kind: "blob" }, blob));
+                    }
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs by hierarchy.
      * under the specified account.
@@ -30746,7 +31884,7 @@ var ContainerClient = /** @class */ (function (_super) {
      *   }
      *   entity = await iter.next();
      * }
-     * ```js
+     * ```
      *
      * Example using `byPage()`:
      *
@@ -30787,22 +31925,14 @@ var ContainerClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} delimiter The character or string used to define the virtual hierarchy
-     * @param {ContainerListBlobsOptions} [options={}] Options to list blobs operation.
-     * @returns {(PagedAsyncIterableIterator<
-     *   { kind: "prefix" } & BlobPrefix | { kind: "blob" } & BlobItem,
-     *     ContainerListBlobHierarchySegmentResponse
-     *   >)}
-     * @memberof ContainerClient
+     * @param delimiter - The character or string used to define the virtual hierarchy
+     * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listBlobsByHierarchy = function (delimiter, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listBlobsByHierarchy(delimiter, options = {}) {
         if (delimiter === "") {
             throw new RangeError("delimiter should contain one or more characters");
         }
-        var include = [];
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -30824,48 +31954,51 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.includeTags) {
             include.push("tags");
         }
+        if (options.includeDeletedWithVersions) {
+            include.push("deletedwithversions");
+        }
+        if (options.includeImmutabilityPolicy) {
+            include.push("immutabilitypolicy");
+        }
+        if (options.includeLegalHold) {
+            include.push("legalhold");
+        }
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blob prefixes and blobs
-        var iter = this.listItemsByHierarchy(delimiter, updatedOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return tslib.__awaiter(this, void 0, void 0, function () {
-                        return tslib.__generator(this, function (_a) {
-                            return [2 /*return*/, iter.next()];
-                        });
-                    });
-                }
+        const iter = this.listItemsByHierarchy(delimiter, updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            async next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listHierarchySegments(delimiter, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
-    ContainerClient.prototype.getContainerNameFromUrl = function () {
-        var containerName;
+            byPage: (settings = {}) => {
+                return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
+    getContainerNameFromUrl() {
+        let containerName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer?sasString";
             // "https://myaccount.blob.core.windows.net/mycontainer";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`
             // http://localhost:10001/devstoreaccount1/containername
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername".
                 // "https://customdomain.com/containername".
@@ -30893,784 +32026,473 @@ var ContainerClient = /** @class */ (function (_super) {
         catch (error) {
             throw new Error("Unable to extract containerName with provided information.");
         }
-    };
-    return ContainerClient;
-}(StorageClient));
-
-function getBodyAsText(batchResponse) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var buffer, responseLength;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
-                    return [4 /*yield*/, streamToBuffer2(batchResponse.readableStreamBody, buffer)];
-                case 1:
-                    responseLength = _a.sent();
-                    // Slice the buffer to trim the empty ending.
-                    buffer = buffer.slice(0, responseLength);
-                    return [2 /*return*/, buffer.toString()];
+    }
+    /**
+     * Only available for ContainerClient constructed with a shared key credential.
+     *
+     * Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
+     *
+     * @param options - Optional parameters.
+     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
+     */
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
+                throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    });
-}
-function utf8ByteLength(str) {
-    return Buffer.byteLength(str);
-}
-
-var HTTP_HEADER_DELIMITER = ": ";
-var SPACE_DELIMITER = " ";
-var NOT_FOUND = -1;
-/**
- * Util class for parsing batch response.
- */
-var BatchResponseParser = /** @class */ (function () {
-    function BatchResponseParser(batchResponse, subRequests) {
-        if (!batchResponse || !batchResponse.contentType) {
-            // In special case(reported), server may return invalid content-type which could not be parsed.
-            throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
-        }
-        if (!subRequests || subRequests.size === 0) {
-            // This should be prevent during coding.
-            throw new RangeError("Invalid state: subRequests is not provided or size is 0.");
-        }
-        this.batchResponse = batchResponse;
-        this.subRequests = subRequests;
-        this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
-        this.perResponsePrefix = "--" + this.responseBatchBoundary + HTTP_LINE_ENDING;
-        this.batchResponseEnding = "--" + this.responseBatchBoundary + "--";
-    }
-    // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
-    BatchResponseParser.prototype.parseBatchResponse = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var responseBodyAsText, subResponses, subResponseCount, deserializedSubResponses, subResponsesSucceededCount, subResponsesFailedCount, index, subResponse, deserializedSubResponse, responseLines, subRespHeaderStartFound, subRespHeaderEndFound, subRespFailed, contentId, _i, responseLines_1, responseLine, tokens, tokens;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
-                        // sub request's response.
-                        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
-                            throw new Error("Invalid state: batch request failed with status: '" + this.batchResponse._response.status + "'.");
-                        }
-                        return [4 /*yield*/, getBodyAsText(this.batchResponse)];
-                    case 1:
-                        responseBodyAsText = _a.sent();
-                        subResponses = responseBodyAsText
-                            .split(this.batchResponseEnding)[0] // string after ending is useless
-                            .split(this.perResponsePrefix)
-                            .slice(1);
-                        subResponseCount = subResponses.length;
-                        // Defensive coding in case of potential error parsing.
-                        // Note: subResponseCount == 1 is special case where sub request is invalid.
-                        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
-                        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
-                        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
-                            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
-                        }
-                        deserializedSubResponses = new Array(subResponseCount);
-                        subResponsesSucceededCount = 0;
-                        subResponsesFailedCount = 0;
-                        // Parse sub subResponses.
-                        for (index = 0; index < subResponseCount; index++) {
-                            subResponse = subResponses[index];
-                            deserializedSubResponses[index] = {};
-                            deserializedSubResponse = deserializedSubResponses[index];
-                            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
-                            responseLines = subResponse.split("" + HTTP_LINE_ENDING);
-                            subRespHeaderStartFound = false;
-                            subRespHeaderEndFound = false;
-                            subRespFailed = false;
-                            contentId = NOT_FOUND;
-                            for (_i = 0, responseLines_1 = responseLines; _i < responseLines_1.length; _i++) {
-                                responseLine = responseLines_1[_i];
-                                if (!subRespHeaderStartFound) {
-                                    // Convention line to indicate content ID
-                                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
-                                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
-                                    }
-                                    // Http version line with status code indicates the start of sub request's response.
-                                    // Example: HTTP/1.1 202 Accepted
-                                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
-                                        subRespHeaderStartFound = true;
-                                        tokens = responseLine.split(SPACE_DELIMITER);
-                                        deserializedSubResponse.status = parseInt(tokens[1]);
-                                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
-                                    }
-                                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
-                                }
-                                if (responseLine.trim() === "") {
-                                    // Sub response's header start line already found, and the first empty line indicates header end line found.
-                                    if (!subRespHeaderEndFound) {
-                                        subRespHeaderEndFound = true;
-                                    }
-                                    continue; // Skip empty line
-                                }
-                                // Note: when code reach here, it indicates subRespHeaderStartFound == true
-                                if (!subRespHeaderEndFound) {
-                                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
-                                        // Defensive coding to prevent from missing valuable lines.
-                                        throw new Error("Invalid state: find non-empty line '" + responseLine + "' without HTTP header delimiter '" + HTTP_HEADER_DELIMITER + "'.");
-                                    }
-                                    tokens = responseLine.split(HTTP_HEADER_DELIMITER);
-                                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
-                                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
-                                        deserializedSubResponse.errorCode = tokens[1];
-                                        subRespFailed = true;
-                                    }
-                                }
-                                else {
-                                    // Assemble body of sub response.
-                                    if (!deserializedSubResponse.bodyAsText) {
-                                        deserializedSubResponse.bodyAsText = "";
-                                    }
-                                    deserializedSubResponse.bodyAsText += responseLine;
-                                }
-                            } // Inner for end
-                            if (contentId != NOT_FOUND) {
-                                deserializedSubResponse._request = this.subRequests.get(contentId);
-                            }
-                            if (subRespFailed) {
-                                subResponsesFailedCount++;
-                            }
-                            else {
-                                subResponsesSucceededCount++;
-                            }
-                        }
-                        return [2 /*return*/, {
-                                subResponses: deserializedSubResponses,
-                                subResponsesSucceededCount: subResponsesSucceededCount,
-                                subResponsesFailedCount: subResponsesFailedCount
-                            }];
-                }
-            });
-        });
-    };
-    return BatchResponseParser;
-}());
-
-var MutexLockStatus;
-(function (MutexLockStatus) {
-    MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
-    MutexLockStatus[MutexLockStatus["UNLOCKED"] = 1] = "UNLOCKED";
-})(MutexLockStatus || (MutexLockStatus = {}));
-/**
- * An async mutex lock.
- *
- * @export
- * @class Mutex
- */
-var Mutex = /** @class */ (function () {
-    function Mutex() {
     }
     /**
-     * Lock for a specific key. If the lock has been acquired by another customer, then
-     * will wait until getting the lock.
-     *
-     * @static
-     * @param {string} key lock key
-     * @returns {Promise<void>}
-     * @memberof Mutex
-     */
-    Mutex.lock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === undefined || _this.keys[key] === MutexLockStatus.UNLOCKED) {
-                            _this.keys[key] = MutexLockStatus.LOCKED;
-                            resolve();
-                        }
-                        else {
-                            _this.onUnlockEvent(key, function () {
-                                _this.keys[key] = MutexLockStatus.LOCKED;
-                                resolve();
-                            });
-                        }
-                    })];
-            });
-        });
-    };
-    /**
-     * Unlock a key.
-     *
-     * @static
-     * @param {string} key
-     * @returns {Promise<void>}
-     * @memberof Mutex
-     */
-    Mutex.unlock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === MutexLockStatus.LOCKED) {
-                            _this.emitUnlockEvent(key);
-                        }
-                        delete _this.keys[key];
-                        resolve();
-                    })];
-            });
-        });
-    };
-    Mutex.onUnlockEvent = function (key, handler) {
-        if (this.listeners[key] === undefined) {
-            this.listeners[key] = [handler];
-        }
-        else {
-            this.listeners[key].push(handler);
-        }
-    };
-    Mutex.emitUnlockEvent = function (key) {
-        var _this = this;
-        if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
-            var handler_1 = this.listeners[key].shift();
-            setImmediate(function () {
-                handler_1.call(_this);
-            });
-        }
-    };
-    Mutex.keys = {};
-    Mutex.listeners = {};
-    return Mutex;
-}());
-
-/**
- * A BlobBatch represents an aggregated set of operations on blobs.
- * Currently, only `delete` and `setAccessTier` are supported.
- *
- * @export
- * @class BlobBatch
- */
-var BlobBatch = /** @class */ (function () {
-    function BlobBatch() {
-        this.batch = "batch";
-        this.batchRequest = new InnerBatchRequest();
-    }
-    /**
-     * Get the value of Content-Type for a batch request.
-     * The value must be multipart/mixed with a batch boundary.
-     * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
-     */
-    BlobBatch.prototype.getMultiPartContentType = function () {
-        return this.batchRequest.getMultipartContentType();
-    };
-    /**
-     * Get assembled HTTP request body for sub requests.
-     */
-    BlobBatch.prototype.getHttpRequestBody = function () {
-        return this.batchRequest.getHttpRequestBody();
-    };
-    /**
-     * Get sub requests that are added into the batch request.
-     */
-    BlobBatch.prototype.getSubRequests = function () {
-        return this.batchRequest.getSubRequests();
-    };
-    BlobBatch.prototype.addSubRequestInternal = function (subRequest, assembleSubRequestFunc) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, Mutex.lock(this.batch)];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        _a.trys.push([2, , 4, 6]);
-                        this.batchRequest.preAddSubRequest(subRequest);
-                        return [4 /*yield*/, assembleSubRequestFunc()];
-                    case 3:
-                        _a.sent();
-                        this.batchRequest.postAddSubRequest(subRequest);
-                        return [3 /*break*/, 6];
-                    case 4: return [4 /*yield*/, Mutex.unlock(this.batch)];
-                    case 5:
-                        _a.sent();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBatchType = function (batchType) {
-        if (!this.batchType) {
-            this.batchType = batchType;
-        }
-        if (this.batchType !== batchType) {
-            throw new RangeError("BlobBatch only supports one operation type per batch and it already is being used for " + this.batchType + " operations.");
-        }
-    };
-    BlobBatch.prototype.deleteBlob = function (urlOrBlobClient, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, _a, span, spanOptions, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
-                                credentialOrOptions instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrOptions))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            options = credentialOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchDeleteRequest-addSubRequest", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("delete");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBlobAccessTier = function (urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, tier, _a, span, spanOptions, e_2;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
-                                credentialOrTier instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrTier))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrTier;
-                            tier = tierOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            tier = credentialOrTier;
-                            options = tierOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchSetTierRequest-addSubRequest", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("setAccessTier");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobBatch;
-}());
-/**
- * Inner batch request class which is responsible for assembling and serializing sub requests.
- * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
- */
-var InnerBatchRequest = /** @class */ (function () {
-    function InnerBatchRequest() {
-        this.operationCount = 0;
-        this.body = "";
-        var tempGuid = coreHttp.generateUuid();
-        // batch_{batchid}
-        this.boundary = "batch_" + tempGuid;
-        // --batch_{batchid}
-        // Content-Type: application/http
-        // Content-Transfer-Encoding: binary
-        this.subRequestPrefix = "--" + this.boundary + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TYPE + ": application/http" + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TRANSFER_ENCODING + ": binary";
-        // multipart/mixed; boundary=batch_{batchid}
-        this.multipartContentType = "multipart/mixed; boundary=" + this.boundary;
-        // --batch_{batchid}--
-        this.batchRequestEnding = "--" + this.boundary + "--";
-        this.subRequests = new Map();
-    }
-    /**
-     * Create pipeline to assemble sub requests. The idea here is to use existing
-     * credential and serialization/deserialization components, with additional policies to
-     * filter unnecessary headers, assemble sub requests into request's body
-     * and intercept request from going to wire.
-     * @param {StorageSharedKeyCredential | AnonymousCredential | TokenCredential} credential  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the @azure/identity package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
-     */
-    InnerBatchRequest.prototype.createPipeline = function (credential) {
-        var isAnonymousCreds = credential instanceof AnonymousCredential;
-        var policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
-        var factories = new Array(policyFactoryLength);
-        factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
-        factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
-        if (!isAnonymousCreds) {
-            factories[2] = coreHttp.isTokenCredential(credential)
-                ? coreHttp.bearerTokenAuthenticationPolicy(credential, StorageOAuthScopes)
-                : credential;
-        }
-        factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
-        return new Pipeline(factories, {});
-    };
-    InnerBatchRequest.prototype.appendSubRequestToBody = function (request) {
-        // Start to assemble sub request
-        this.body += [
-            this.subRequestPrefix,
-            HeaderConstants.CONTENT_ID + ": " + this.operationCount,
-            "",
-            request.method.toString() + " " + getURLPathAndQuery(request.url) + " " + HTTP_VERSION_1_1 + HTTP_LINE_ENDING // sub request start line with method
-        ].join(HTTP_LINE_ENDING);
-        for (var _i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-            var header = _a[_i];
-            this.body += header.name + ": " + header.value + HTTP_LINE_ENDING;
-        }
-        this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
-        // No body to assemble for current batch request support
-        // End to assemble sub request
-    };
-    InnerBatchRequest.prototype.preAddSubRequest = function (subRequest) {
-        if (this.operationCount >= BATCH_MAX_REQUEST) {
-            throw new RangeError("Cannot exceed " + BATCH_MAX_REQUEST + " sub requests in a single batch");
-        }
-        // Fast fail if url for sub request is invalid
-        var path = getURLPath(subRequest.url);
-        if (!path || path == "") {
-            throw new RangeError("Invalid url for sub request: '" + subRequest.url + "'");
-        }
-    };
-    InnerBatchRequest.prototype.postAddSubRequest = function (subRequest) {
-        this.subRequests.set(this.operationCount, subRequest);
-        this.operationCount++;
-    };
-    // Return the http request body with assembling the ending line to the sub request body.
-    InnerBatchRequest.prototype.getHttpRequestBody = function () {
-        return "" + this.body + this.batchRequestEnding + HTTP_LINE_ENDING;
-    };
-    InnerBatchRequest.prototype.getMultipartContentType = function () {
-        return this.multipartContentType;
-    };
-    InnerBatchRequest.prototype.getSubRequests = function () {
-        return this.subRequests;
-    };
-    return InnerBatchRequest;
-}());
-var BatchRequestAssemblePolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchRequestAssemblePolicy, _super);
-    function BatchRequestAssemblePolicy(batchRequest, nextPolicy, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.dummyResponse = {
-            request: new coreHttp.WebResource(),
-            status: 200,
-            headers: new coreHttp.HttpHeaders()
-        };
-        _this.batchRequest = batchRequest;
-        return _this;
-    }
-    BatchRequestAssemblePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, this.batchRequest.appendSubRequestToBody(request)];
-                    case 1:
-                        _a.sent();
-                        return [2 /*return*/, this.dummyResponse]; // Intercept request from going to wire
-                }
-            });
-        });
-    };
-    return BatchRequestAssemblePolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchRequestAssemblePolicyFactory = /** @class */ (function () {
-    function BatchRequestAssemblePolicyFactory(batchRequest) {
-        this.batchRequest = batchRequest;
-    }
-    BatchRequestAssemblePolicyFactory.prototype.create = function (nextPolicy, options) {
-        return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
-    };
-    return BatchRequestAssemblePolicyFactory;
-}());
-var BatchHeaderFilterPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchHeaderFilterPolicy, _super);
-    function BatchHeaderFilterPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
-    }
-    BatchHeaderFilterPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var xMsHeaderName, _i, _a, header;
-            return tslib.__generator(this, function (_b) {
-                xMsHeaderName = "";
-                for (_i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-                    header = _a[_i];
-                    if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
-                        xMsHeaderName = header.name;
-                    }
-                }
-                if (xMsHeaderName !== "") {
-                    request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return BatchHeaderFilterPolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
-    function BatchHeaderFilterPolicyFactory() {
-    }
-    BatchHeaderFilterPolicyFactory.prototype.create = function (nextPolicy, options) {
-        return new BatchHeaderFilterPolicy(nextPolicy, options);
-    };
-    return BatchHeaderFilterPolicyFactory;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.
- *
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
- */
-var BlobBatchClient = /** @class */ (function () {
-    function BlobBatchClient(url, credentialOrPipeline, options) {
-        var pipeline;
-        if (credentialOrPipeline instanceof Pipeline) {
-            pipeline = credentialOrPipeline;
-        }
-        else if (!credentialOrPipeline) {
-            // no credential provided
-            pipeline = newPipeline(new AnonymousCredential(), options);
-        }
-        else {
-            pipeline = newPipeline(credentialOrPipeline, options);
-        }
-        var storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
-        this._serviceContext = new Service(storageClientContext);
-    }
-    /**
-     * Creates a {@link BlobBatch}.
-     * A BlobBatch represents an aggregated set of operations on blobs.
-     */
-    BlobBatchClient.prototype.createBatch = function () {
-        return new BlobBatch();
-    };
-    BlobBatchClient.prototype.deleteBlobs = function (urlsOrBlobClients, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_1, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_1 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_1.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_1[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    BlobBatchClient.prototype.setBlobsAccessTier = function (urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_2, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_2 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_2.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_2[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    /**
-     * Submit batch request which consists of multiple subrequests.
-     *
-     * Get `blobBatchClient` and other details before running the snippets.
-     * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`
-     *
-     * Example usage:
-     *
-     * ```js
-     * let batchRequest = new BlobBatch();
-     * await batchRequest.deleteBlob(urlInString0, credential0);
-     * await batchRequest.deleteBlob(urlInString1, credential1, {
-     *  deleteSnapshots: "include"
-     * });
-     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
-     * console.log(batchResp.subResponsesSucceededCount);
-     * ```
-     *
-     * Example using a lease:
-     *
-     * ```js
-     * let batchRequest = new BlobBatch();
-     * await batchRequest.setBlobAccessTier(blockBlobClient0, "Cool");
-     * await batchRequest.setBlobAccessTier(blockBlobClient1, "Cool", {
-     *  conditions: { leaseId: leaseId }
-     * });
-     * const batchResp = await blobBatchClient.submitBatch(batchRequest);
-     * console.log(batchResp.subResponsesSucceededCount);
-     * ```
+     * Creates a BlobBatchClient object to conduct batch operations.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
      *
-     * @param {BlobBatch} batchRequest A set of Delete or SetTier operations.
-     * @param {BlobBatchSubmitBatchOptionalParams} [options]
-     * @returns {Promise<BlobBatchSubmitBatchResponse>}
-     * @memberof BlobBatchClient
+     * @returns A new BlobBatchClient object for this container.
      */
-    BlobBatchClient.prototype.submitBatch = function (batchRequest, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, batchRequestBody, rawBatchResponse, batchResponseParser, responseSummary, res, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
-                            throw new RangeError("Batch request should contain one or more sub requests.");
-                        }
-                        _a = createSpan("BlobBatchClient-submitBatch", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        batchRequestBody = batchRequest.getHttpRequestBody();
-                        return [4 /*yield*/, this._serviceContext.submitBatch(batchRequestBody, utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), tslib.__assign(tslib.__assign({}, options), { spanOptions: spanOptions }))];
-                    case 2:
-                        rawBatchResponse = _b.sent();
-                        batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
-                        return [4 /*yield*/, batchResponseParser.parseBatchResponse()];
-                    case 3:
-                        responseSummary = _b.sent();
-                        res = {
-                            _response: rawBatchResponse._response,
-                            contentType: rawBatchResponse.contentType,
-                            errorCode: rawBatchResponse.errorCode,
-                            requestId: rawBatchResponse.requestId,
-                            clientRequestId: rawBatchResponse.clientRequestId,
-                            version: rawBatchResponse.version,
-                            subResponses: responseSummary.subResponses,
-                            subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
-                            subResponsesFailedCount: responseSummary.subResponsesFailedCount
-                        };
-                        return [2 /*return*/, res];
-                    case 4:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobBatchClient;
-}());
+    getBlobBatchClient() {
+        return new BlobBatchClient(this.url, this.pipeline);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
+ * values are set, this should be serialized with toString and set as the permissions field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
+ * the order of the permissions is particular and this class guarantees correctness.
+ */
+class AccountSASPermissions {
+    constructor() {
+        /**
+         * Permission to read resources and list queues and tables granted.
+         */
+        this.read = false;
+        /**
+         * Permission to write resources granted.
+         */
+        this.write = false;
+        /**
+         * Permission to create blobs and files granted.
+         */
+        this.delete = false;
+        /**
+         * Permission to delete versions granted.
+         */
+        this.deleteVersion = false;
+        /**
+         * Permission to list blob containers, blobs, shares, directories, and files granted.
+         */
+        this.list = false;
+        /**
+         * Permission to add messages, table entities, and append to blobs granted.
+         */
+        this.add = false;
+        /**
+         * Permission to create blobs and files granted.
+         */
+        this.create = false;
+        /**
+         * Permissions to update messages and table entities granted.
+         */
+        this.update = false;
+        /**
+         * Permission to get and delete messages granted.
+         */
+        this.process = false;
+        /**
+         * Specfies Tag access granted.
+         */
+        this.tag = false;
+        /**
+         * Permission to filter blobs.
+         */
+        this.filter = false;
+        /**
+         * Permission to set immutability policy.
+         */
+        this.setImmutabilityPolicy = false;
+    }
+    /**
+     * Parse initializes the AccountSASPermissions fields from a string.
+     *
+     * @param permissions -
+     */
+    static parse(permissions) {
+        const accountSASPermissions = new AccountSASPermissions();
+        for (const c of permissions) {
+            switch (c) {
+                case "r":
+                    accountSASPermissions.read = true;
+                    break;
+                case "w":
+                    accountSASPermissions.write = true;
+                    break;
+                case "d":
+                    accountSASPermissions.delete = true;
+                    break;
+                case "x":
+                    accountSASPermissions.deleteVersion = true;
+                    break;
+                case "l":
+                    accountSASPermissions.list = true;
+                    break;
+                case "a":
+                    accountSASPermissions.add = true;
+                    break;
+                case "c":
+                    accountSASPermissions.create = true;
+                    break;
+                case "u":
+                    accountSASPermissions.update = true;
+                    break;
+                case "p":
+                    accountSASPermissions.process = true;
+                    break;
+                case "t":
+                    accountSASPermissions.tag = true;
+                    break;
+                case "f":
+                    accountSASPermissions.filter = true;
+                    break;
+                case "i":
+                    accountSASPermissions.setImmutabilityPolicy = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid permission character: ${c}`);
+            }
+        }
+        return accountSASPermissions;
+    }
+    /**
+     * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it
+     * and boolean values for them.
+     *
+     * @param permissionLike -
+     */
+    static from(permissionLike) {
+        const accountSASPermissions = new AccountSASPermissions();
+        if (permissionLike.read) {
+            accountSASPermissions.read = true;
+        }
+        if (permissionLike.write) {
+            accountSASPermissions.write = true;
+        }
+        if (permissionLike.delete) {
+            accountSASPermissions.delete = true;
+        }
+        if (permissionLike.deleteVersion) {
+            accountSASPermissions.deleteVersion = true;
+        }
+        if (permissionLike.filter) {
+            accountSASPermissions.filter = true;
+        }
+        if (permissionLike.tag) {
+            accountSASPermissions.tag = true;
+        }
+        if (permissionLike.list) {
+            accountSASPermissions.list = true;
+        }
+        if (permissionLike.add) {
+            accountSASPermissions.add = true;
+        }
+        if (permissionLike.create) {
+            accountSASPermissions.create = true;
+        }
+        if (permissionLike.update) {
+            accountSASPermissions.update = true;
+        }
+        if (permissionLike.process) {
+            accountSASPermissions.process = true;
+        }
+        if (permissionLike.setImmutabilityPolicy) {
+            accountSASPermissions.setImmutabilityPolicy = true;
+        }
+        return accountSASPermissions;
+    }
+    /**
+     * Produces the SAS permissions string for an Azure Storage account.
+     * Call this method to set AccountSASSignatureValues Permissions field.
+     *
+     * Using this method will guarantee the resource types are in
+     * an order accepted by the service.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+     *
+     */
+    toString() {
+        // The order of the characters should be as specified here to ensure correctness:
+        // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+        // Use a string array instead of string concatenating += operator for performance
+        const permissions = [];
+        if (this.read) {
+            permissions.push("r");
+        }
+        if (this.write) {
+            permissions.push("w");
+        }
+        if (this.delete) {
+            permissions.push("d");
+        }
+        if (this.deleteVersion) {
+            permissions.push("x");
+        }
+        if (this.filter) {
+            permissions.push("f");
+        }
+        if (this.tag) {
+            permissions.push("t");
+        }
+        if (this.list) {
+            permissions.push("l");
+        }
+        if (this.add) {
+            permissions.push("a");
+        }
+        if (this.create) {
+            permissions.push("c");
+        }
+        if (this.update) {
+            permissions.push("u");
+        }
+        if (this.process) {
+            permissions.push("p");
+        }
+        if (this.setImmutabilityPolicy) {
+            permissions.push("i");
+        }
+        return permissions.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
+ * values are set, this should be serialized with toString and set as the resources field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
+ * the order of the resources is particular and this class guarantees correctness.
+ */
+class AccountSASResourceTypes {
+    constructor() {
+        /**
+         * Permission to access service level APIs granted.
+         */
+        this.service = false;
+        /**
+         * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
+         */
+        this.container = false;
+        /**
+         * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
+         */
+        this.object = false;
+    }
+    /**
+     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid resource type.
+     *
+     * @param resourceTypes -
+     */
+    static parse(resourceTypes) {
+        const accountSASResourceTypes = new AccountSASResourceTypes();
+        for (const c of resourceTypes) {
+            switch (c) {
+                case "s":
+                    accountSASResourceTypes.service = true;
+                    break;
+                case "c":
+                    accountSASResourceTypes.container = true;
+                    break;
+                case "o":
+                    accountSASResourceTypes.object = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid resource type: ${c}`);
+            }
+        }
+        return accountSASResourceTypes;
+    }
+    /**
+     * Converts the given resource types to a string.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+     *
+     */
+    toString() {
+        const resourceTypes = [];
+        if (this.service) {
+            resourceTypes.push("s");
+        }
+        if (this.container) {
+            resourceTypes.push("c");
+        }
+        if (this.object) {
+            resourceTypes.push("o");
+        }
+        return resourceTypes.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
+ * to true means that any SAS which uses these permissions will grant access to that service. Once all the
+ * values are set, this should be serialized with toString and set as the services field on an
+ * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
+ * the order of the services is particular and this class guarantees correctness.
+ */
+class AccountSASServices {
+    constructor() {
+        /**
+         * Permission to access blob resources granted.
+         */
+        this.blob = false;
+        /**
+         * Permission to access file resources granted.
+         */
+        this.file = false;
+        /**
+         * Permission to access queue resources granted.
+         */
+        this.queue = false;
+        /**
+         * Permission to access table resources granted.
+         */
+        this.table = false;
+    }
+    /**
+     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an
+     * Error if it encounters a character that does not correspond to a valid service.
+     *
+     * @param services -
+     */
+    static parse(services) {
+        const accountSASServices = new AccountSASServices();
+        for (const c of services) {
+            switch (c) {
+                case "b":
+                    accountSASServices.blob = true;
+                    break;
+                case "f":
+                    accountSASServices.file = true;
+                    break;
+                case "q":
+                    accountSASServices.queue = true;
+                    break;
+                case "t":
+                    accountSASServices.table = true;
+                    break;
+                default:
+                    throw new RangeError(`Invalid service character: ${c}`);
+            }
+        }
+        return accountSASServices;
+    }
+    /**
+     * Converts the given services to a string.
+     *
+     */
+    toString() {
+        const services = [];
+        if (this.blob) {
+            services.push("b");
+        }
+        if (this.table) {
+            services.push("t");
+        }
+        if (this.queue) {
+            services.push("q");
+        }
+        if (this.file) {
+            services.push("f");
+        }
+        return services.join("");
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * ONLY AVAILABLE IN NODE.JS RUNTIME.
+ *
+ * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
+ * REST request.
+ *
+ * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
+ *
+ * @param accountSASSignatureValues -
+ * @param sharedKeyCredential -
+ */
+function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
+    const version = accountSASSignatureValues.version
+        ? accountSASSignatureValues.version
+        : SERVICE_VERSION;
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.setImmutabilityPolicy &&
+        version < "2020-08-04") {
+        throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.deleteVersion &&
+        version < "2019-10-10") {
+        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.tag &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
+    }
+    if (accountSASSignatureValues.permissions &&
+        accountSASSignatureValues.permissions.filter &&
+        version < "2019-12-12") {
+        throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
+    }
+    const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
+    const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
+    const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
+    const stringToSign = [
+        sharedKeyCredential.accountName,
+        parsedPermissions,
+        parsedServices,
+        parsedResourceTypes,
+        accountSASSignatureValues.startsOn
+            ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)
+            : "",
+        truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),
+        accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : "",
+        accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : "",
+        version,
+        "" // Account SAS requires an additional newline character
+    ].join("\n");
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
+}
 
 /**
  * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you
  * to manipulate blob containers.
- *
- * @export
- * @class BlobServiceClient
  */
-var BlobServiceClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobServiceClient, _super);
-    function BlobServiceClient(url, credentialOrPipeline, options) {
-        var _this = this;
-        var pipeline;
-        if (credentialOrPipeline instanceof Pipeline) {
+class BlobServiceClient extends StorageClient {
+    constructor(url, credentialOrPipeline, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
+        let pipeline;
+        if (isPipelineLike(credentialOrPipeline)) {
             pipeline = credentialOrPipeline;
         }
         else if ((coreHttp.isNode && credentialOrPipeline instanceof StorageSharedKeyCredential) ||
@@ -31682,48 +32504,48 @@ var BlobServiceClient = /** @class */ (function (_super) {
             // The second parameter is undefined. Use anonymous credential
             pipeline = newPipeline(new AnonymousCredential(), options);
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.serviceContext = new Service(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.serviceContext = new Service(this.storageClientContext);
     }
     /**
      *
      * Creates an instance of BlobServiceClient from connection string.
      *
-     * @param {string} connectionString Account connection string or a SAS connection string of an Azure storage account.
+     * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.
      *                                  [ Note - Account connection string can only be used in NODE.JS runtime. ]
      *                                  Account connection string example -
      *                                  `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`
      *                                  SAS connection string example -
      *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
-     * @param {StoragePipelineOptions} [options] Optional. Options to configure the HTTP pipeline.
-     * @memberof BlobServiceClient
+     * @param options - Optional. Options to configure the HTTP pipeline.
      */
-    BlobServiceClient.fromConnectionString = function (connectionString, options) {
+    static fromConnectionString(connectionString, 
+    // Legacy, no fix for eslint error without breaking. Disable it for this interface.
+    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/
+    options) {
         options = options || {};
-        var extractedCreds = extractConnectionStringParts(connectionString);
+        const extractedCreds = extractConnectionStringParts(connectionString);
         if (extractedCreds.kind === "AccountConnString") {
             {
-                var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                 options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
-                var pipeline = newPipeline(sharedKeyCredential, options);
+                const pipeline = newPipeline(sharedKeyCredential, options);
                 return new BlobServiceClient(extractedCreds.url, pipeline);
             }
         }
         else if (extractedCreds.kind === "SASConnString") {
-            var pipeline = newPipeline(new AnonymousCredential(), options);
+            const pipeline = newPipeline(new AnonymousCredential(), options);
             return new BlobServiceClient(extractedCreds.url + "?" + extractedCreds.accountSas, pipeline);
         }
         else {
             throw new Error("Connection string must be either an Account connection string or a SAS connection string");
         }
-    };
+    }
     /**
      * Creates a {@link ContainerClient} object
      *
-     * @param {string} containerName A container name
-     * @returns {ContainerClient} A new ContainerClient object for the given container name.
-     * @memberof BlobServiceClient
+     * @param containerName - A container name
+     * @returns A new ContainerClient object for the given container name.
      *
      * Example usage:
      *
@@ -31731,210 +32553,195 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * const containerClient = blobServiceClient.getContainerClient("<container name>");
      * ```
      */
-    BlobServiceClient.prototype.getContainerClient = function (containerName) {
+    getContainerClient(containerName) {
         return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);
-    };
+    }
     /**
      * Create a Blob container.
      *
-     * @param {string} containerName Name of the container to create.
-     * @param {ContainerCreateOptions} [options] Options to configure Container Create operation.
-     * @returns {Promise<{ containerClient: ContainerClient; containerCreateResponse: ContainerCreateResponse }>} Container creation response and the corresponding container client.
-     * @memberof BlobServiceClient
+     * @param containerName - Name of the container to create.
+     * @param options - Options to configure Container Create operation.
+     * @returns Container creation response and the corresponding container client.
      */
-    BlobServiceClient.prototype.createContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, containerClient, containerCreateResponse, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-createContainer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.create(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2:
-                        containerCreateResponse = _b.sent();
-                        return [2 /*return*/, {
-                                containerClient: containerClient,
-                                containerCreateResponse: containerCreateResponse
-                            }];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async createContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-createContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            const containerCreateResponse = await containerClient.create(updatedOptions);
+            return {
+                containerClient,
+                containerCreateResponse
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Deletes a Blob container.
      *
-     * @param {string} containerName Name of the container to delete.
-     * @param {ContainerDeleteMethodOptions} [options] Options to configure Container Delete operation.
-     * @returns {Promise<ContainerDeleteResponse>} Container deletion response.
-     * @memberof BlobServiceClient
+     * @param containerName - Name of the container to delete.
+     * @param options - Options to configure Container Delete operation.
+     * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.deleteContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, containerClient, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-deleteContainer", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.delete(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), { spanOptions: spanOptions }) }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-deleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            return await containerClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Restore a previously deleted Blob container.
+     * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.
+     *
+     * @param deletedContainerName - Name of the previously deleted container.
+     * @param deletedContainerVersion - Version of the previously deleted container, used to uniquely identify the deleted container.
+     * @param options - Options to configure Container Restore operation.
+     * @returns Container deletion response.
+     */
+    async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-undeleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerUndeleteResponse = await containerContext.restore(Object.assign({ deletedContainerName,
+                deletedContainerVersion }, updatedOptions));
+            return { containerClient, containerUndeleteResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    /**
+     * Rename an existing Blob Container.
+     *
+     * @param sourceContainerName - The name of the source container.
+     * @param destinationContainerName - The new name of the container.
+     * @param options - Options to configure Container Rename operation.
+     */
+    /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */
+    // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.
+    async renameContainer(sourceContainerName, destinationContainerName, options = {}) {
+        var _a;
+        const { span, updatedOptions } = createSpan("BlobServiceClient-renameContainer", options);
+        try {
+            const containerClient = this.getContainerClient(destinationContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerRenameResponse = await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }));
+            return { containerClient, containerRenameResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the properties of a storage account’s Blob service, including properties
      * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties
      *
-     * @param {ServiceGetPropertiesOptions} [options] Options to the Service Get Properties operation.
-     * @returns {Promise<ServiceGetPropertiesResponse>} Response data for the Service Get Properties operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Properties operation.
+     * @returns Response data for the Service Get Properties operation.
      */
-    BlobServiceClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getProperties({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_3 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getProperties", options);
+        try {
+            return await this.serviceContext.getProperties(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets properties for a storage account’s Blob service endpoint, including properties
      * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties}
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties
      *
-     * @param {BlobServiceProperties} properties
-     * @param {ServiceSetPropertiesOptions} [options] Options to the Service Set Properties operation.
-     * @returns {Promise<ServiceSetPropertiesResponse>} Response data for the Service Set Properties operation.
-     * @memberof BlobServiceClient
+     * @param properties -
+     * @param options - Options to the Service Set Properties operation.
+     * @returns Response data for the Service Set Properties operation.
      */
-    BlobServiceClient.prototype.setProperties = function (properties, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_4;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-setProperties", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.setProperties(properties, {
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_4 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setProperties(properties, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-setProperties", options);
+        try {
+            return await this.serviceContext.setProperties(properties, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only
      * available on the secondary location endpoint when read-access geo-redundant
      * replication is enabled for the storage account.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats}
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats
      *
-     * @param {ServiceGetStatisticsOptions} [options] Options to the Service Get Statistics operation.
-     * @returns {Promise<ServiceGetStatisticsResponse>} Response data for the Service Get Statistics operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Statistics operation.
+     * @returns Response data for the Service Get Statistics operation.
      */
-    BlobServiceClient.prototype.getStatistics = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getStatistics", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getStatistics({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getStatistics(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getStatistics", options);
+        try {
+            return await this.serviceContext.getStatistics(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Get Account Information operation returns the sku name and account kind
      * for the specified account.
@@ -31942,240 +32749,155 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * with version 2018-03-28.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information
      *
-     * @param {ServiceGetAccountInfoOptions} [options] Options to the Service Get Account Info operation.
-     * @returns {Promise<ServiceGetAccountInfoResponse>} Response data for the Service Get Account Info operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service Get Account Info operation.
+     * @returns Response data for the Service Get Account Info operation.
      */
-    BlobServiceClient.prototype.getAccountInfo = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getAccountInfo", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getAccountInfo({
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getAccountInfo(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getAccountInfo", options);
+        try {
+            return await this.serviceContext.getAccountInfo(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns a list of the containers under the specified account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2
      *
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                        the list of containers to be returned with the next listing operation. The
-     *                        operation returns the NextMarker value within the response body if the
+     *                        operation returns the continuationToken value within the response body if the
      *                        listing operation did not return all containers remaining to be listed
-     *                        with the current page. The NextMarker value can be used as the value for
+     *                        with the current page. The continuationToken value can be used as the value for
      *                        the marker parameter in a subsequent call to request the next page of list
      *                        items. The marker value is opaque to the client.
-     * @param {ServiceListContainersSegmentOptions} [options] Options to the Service List Container Segment operation.
-     * @returns {Promise<ServiceListContainersSegmentResponse>} Response data for the Service List Container Segment operation.
-     * @memberof BlobServiceClient
+     * @param options - Options to the Service List Container Segment operation.
+     * @returns Response data for the Service List Container Segment operation.
      */
-    BlobServiceClient.prototype.listContainersSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-listContainersSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.listContainersSegment(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, marker: marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include, spanOptions: spanOptions }))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listContainersSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-listContainersSegment", options);
+        try {
+            return await this.serviceContext.listContainersSegment(Object.assign(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags
      * match a given search expression. Filter blobs searches across all containers within a
      * storage account but can be scoped within the expression to a single container.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                        The given expression must evaluate to true for a blob to be returned in the results.
      *                                        The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                        however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
-     *                          operation returns the NextMarker value within the response body if the
+     *                          operation returns the continuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
-     *                          with the current page. The NextMarker value can be used as the value for
+     *                          with the current page. The continuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to find blobs by tags.
-     * @returns {Promise<ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegment = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-findBlobsByTagsSegment", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.filterBlobs({
-                                abortSignal: options.abortSignal,
-                                where: tagFilterSqlExpression,
-                                marker: marker,
-                                maxPageSize: options.maxPageSize,
-                                spanOptions: spanOptions
-                            })];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-findBlobsByTagsSegment", options);
+        try {
+            const response = await this.serviceContext.filterBlobs(Object.assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {
+                    var _a;
+                    let tagValue = "";
+                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
+                        tagValue = blob.tags.blobTagSet[0].value;
+                    }
+                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });
+                }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                          the list of blobs to be returned with the next listing operation. The
-     *                          operation returns the NextMarker value within the response body if the
+     *                          operation returns the continuationToken value within the response body if the
      *                          listing operation did not return all blobs remaining to be listed
-     *                          with the current page. The NextMarker value can be used as the value for
+     *                          with the current page. The continuationToken value can be used as the value for
      *                          the marker parameter in a subsequent call to request the next page of list
      *                          items. The marker value is opaque to the client.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to find blobs by tags.
-     * @returns {AsyncIterableIterator<ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegments = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsSegments_1() {
-            var response;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 6];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options))];
-                    case 2:
-                        response = _a.sent();
-                        response.blobs = response.blobs || [];
-                        marker = response.continuationToken;
-                        return [4 /*yield*/, tslib.__await(response)];
-                    case 3: return [4 /*yield*/, _a.sent()];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 6;
-                    case 6: return [2 /*return*/];
-                }
-            });
+    findBlobsByTagsSegments(tagFilterSqlExpression, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1() {
+            let response;
+            if (!!marker || marker === undefined) {
+                do {
+                    response = yield tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));
+                    response.blobs = response.blobs || [];
+                    marker = response.continuationToken;
+                    yield yield tslib.__await(response);
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for blobs.
      *
-     * @private
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {ServiceFindBlobsByTagsSegmentOptions} [options={}] Options to findBlobsByTagsItems.
-     * @returns {AsyncIterableIterator<FilterBlobItem>}
-     * @memberof BlobServiceClient
+     * @param options - Options to findBlobsByTagsItems.
      */
-    BlobServiceClient.prototype.findBlobsByTagsItems = function (tagFilterSqlExpression, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsItems_1() {
-            var marker, _a, _b, segment, e_9_1;
-            var e_9, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_9_1 = _d.sent();
-                        e_9 = { error: e_9_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_9) throw e_9.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    findBlobsByTagsItems(tagFilterSqlExpression, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to find all blobs with specified tag
      * under the specified account.
@@ -32249,139 +32971,87 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {string} tagFilterSqlExpression  The where parameter enables the caller to query blobs whose tags match a given expression.
+     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.
      *                                         The given expression must evaluate to true for a blob to be returned in the results.
      *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
-     * @param {ServiceFindBlobByTagsOptions} [options={}] Options to find blobs by tags.
-     * @returns {PagedAsyncIterableIterator<FilterBlobItem, ServiceFindBlobsByTagsSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTags = function (tagFilterSqlExpression, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    findBlobsByTags(tagFilterSqlExpression, options = {}) {
         // AsyncIterableIterator to iterate over blobs
-        var listSegmentOptions = tslib.__assign({}, options);
-        var iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign({}, options);
+        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses
      *
-     * @private
-     * @param {string} [marker] A string value that identifies the portion of
+     * @param marker - A string value that identifies the portion of
      *                        the list of containers to be returned with the next listing operation. The
-     *                        operation returns the NextMarker value within the response body if the
+     *                        operation returns the continuationToken value within the response body if the
      *                        listing operation did not return all containers remaining to be listed
-     *                        with the current page. The NextMarker value can be used as the value for
+     *                        with the current page. The continuationToken value can be used as the value for
      *                        the marker parameter in a subsequent call to request the next page of list
      *                        items. The marker value is opaque to the client.
-     * @param {ServiceListContainersSegmentOptions} [options] Options to list containers operation.
-     * @returns {AsyncIterableIterator<ServiceListContainersSegmentResponse>}
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listContainersSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listContainersSegment(marker, options))];
-                    case 2:
-                        listContainersSegmentResponse = _a.sent();
-                        listContainersSegmentResponse.containerItems =
-                            listContainersSegmentResponse.containerItems || [];
-                        marker = listContainersSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listContainersSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listContainersSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listContainersSegmentResponse = yield tslib.__await(this.listContainersSegment(marker, options));
+                    listContainersSegmentResponse.containerItems =
+                        listContainersSegmentResponse.containerItems || [];
+                    marker = listContainersSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listContainersSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for Container Items
      *
-     * @private
-     * @param {ServiceListContainersSegmentOptions} [options] Options to list containers operation.
-     * @returns {AsyncIterableIterator<ContainerItem>}
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, segment, e_10_1;
-            var e_10, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_10_1 = _d.sent();
-                        e_10 = { error: e_10_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_10) throw e_10.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)));
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the containers
      * under the specified account.
@@ -32453,43 +33123,44 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * }
      * ```
      *
-     * @param {ServiceListContainersOptions} [options={}] Options to list containers.
-     * @returns {PagedAsyncIterableIterator<ContainerItem, ServiceListContainersSegmentResponse>} An asyncIterableIterator that supports paging.
-     * @memberof BlobServiceClient
+     * @param options - Options to list containers.
+     * @returns An asyncIterableIterator that supports paging.
      */
-    BlobServiceClient.prototype.listContainers = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listContainers(options = {}) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
+        const include = [];
+        if (options.includeDeleted) {
+            include.push("deleted");
+        }
+        if (options.includeMetadata) {
+            include.push("metadata");
+        }
         // AsyncIterableIterator to iterate over containers
-        var listSegmentOptions = tslib.__assign(tslib.__assign({}, options), (options.includeMetadata ? { include: "metadata" } : {}));
-        var iter = this.listItems(listSegmentOptions);
-        return _a = {
-                /**
-                 * @member {Promise} [next] The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));
+        const iter = this.listItems(listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
-             * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol
+             * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
-             * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time
+             * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
      *
@@ -32498,1393 +33169,76 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key
      *
-     * @param {Date} startsOn      The start time for the user delegation SAS. Must be within 7 days of the current time
-     * @param {Date} expiresOn     The end time for the user delegation SAS. Must be within 7 days of the current time
-     * @returns {Promise<ServiceGetUserDelegationKeyResponse>}
-     * @memberof BlobServiceClient
+     * @param startsOn -      The start time for the user delegation SAS. Must be within 7 days of the current time
+     * @param expiresOn -     The end time for the user delegation SAS. Must be within 7 days of the current time
      */
-    BlobServiceClient.prototype.getUserDelegationKey = function (startsOn, expiresOn, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, spanOptions, response, userDelegationKey, res, e_11;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getUserDelegationKey", options.tracingOptions), span = _a.span, spanOptions = _a.spanOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getUserDelegationKey({
-                                startsOn: truncatedISO8061Date(startsOn, false),
-                                expiresOn: truncatedISO8061Date(expiresOn, false)
-                            }, {
-                                abortSignal: options.abortSignal,
-                                spanOptions: spanOptions
-                            })];
-                    case 2:
-                        response = _b.sent();
-                        userDelegationKey = {
-                            signedObjectId: response.signedObjectId,
-                            signedTenantId: response.signedTenantId,
-                            signedStartsOn: new Date(response.signedStartsOn),
-                            signedExpiresOn: new Date(response.signedExpiresOn),
-                            signedService: response.signedService,
-                            signedVersion: response.signedVersion,
-                            value: response.value
-                        };
-                        res = tslib.__assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_11 = _b.sent();
-                        span.setStatus({
-                            code: api.CanonicalCode.UNKNOWN,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getUserDelegationKey(startsOn, expiresOn, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getUserDelegationKey", options);
+        try {
+            const response = await this.serviceContext.getUserDelegationKey({
+                startsOn: truncatedISO8061Date(startsOn, false),
+                expiresOn: truncatedISO8061Date(expiresOn, false)
+            }, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const userDelegationKey = {
+                signedObjectId: response.signedObjectId,
+                signedTenantId: response.signedTenantId,
+                signedStartsOn: new Date(response.signedStartsOn),
+                signedExpiresOn: new Date(response.signedExpiresOn),
+                signedService: response.signedService,
+                signedVersion: response.signedVersion,
+                value: response.value
+            };
+            const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
      *
-     * @returns {BlobBatchClient} A new BlobBatchClient object for this service.
-     * @memberof BlobServiceClient
+     * @returns A new BlobBatchClient object for this service.
      */
-    BlobServiceClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
-    return BlobServiceClient;
-}(StorageClient));
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the
- * values are set, this should be serialized with toString and set as the permissions field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASPermissions
- */
-var AccountSASPermissions = /** @class */ (function () {
-    function AccountSASPermissions() {
-        /**
-         * Permission to read resources and list queues and tables granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.read = false;
-        /**
-         * Permission to write resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.write = false;
-        /**
-         * Permission to create blobs and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Permission to delete versions granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Permission to list blob containers, blobs, shares, directories, and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.list = false;
-        /**
-         * Permission to add messages, table entities, and append to blobs granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.add = false;
-        /**
-         * Permission to create blobs and files granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.create = false;
-        /**
-         * Permissions to update messages and table entities granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.update = false;
-        /**
-         * Permission to get and delete messages granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.process = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.tag = false;
-        /**
-         * Permission to filter blobs.
-         *
-         * @type {boolean}
-         * @memberof AccountSASPermissions
-         */
-        this.filter = false;
     }
     /**
-     * Parse initializes the AccountSASPermissions fields from a string.
+     * Only available for BlobServiceClient constructed with a shared key credential.
      *
-     * @static
-     * @param {string} permissions
-     * @returns {AccountSASPermissions}
-     * @memberof AccountSASPermissions
+     * Generates a Blob account Shared Access Signature (SAS) URI based on the client properties
+     * and parameters passed in. The SAS is signed by the shared key credential of the client.
+     *
+     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas
+     *
+     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.
+     * @param permissions - Specifies the list of permissions to be associated with the SAS.
+     * @param resourceTypes - Specifies the resource types associated with the shared access signature.
+     * @param options - Optional parameters.
+     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    AccountSASPermissions.parse = function (permissions) {
-        var accountSASPermissions = new AccountSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var c = permissions_1[_i];
-            switch (c) {
-                case "r":
-                    accountSASPermissions.read = true;
-                    break;
-                case "w":
-                    accountSASPermissions.write = true;
-                    break;
-                case "d":
-                    accountSASPermissions.delete = true;
-                    break;
-                case "x":
-                    accountSASPermissions.deleteVersion = true;
-                    break;
-                case "l":
-                    accountSASPermissions.list = true;
-                    break;
-                case "a":
-                    accountSASPermissions.add = true;
-                    break;
-                case "c":
-                    accountSASPermissions.create = true;
-                    break;
-                case "u":
-                    accountSASPermissions.update = true;
-                    break;
-                case "p":
-                    accountSASPermissions.process = true;
-                    break;
-                case "t":
-                    accountSASPermissions.tag = true;
-                    break;
-                case "f":
-                    accountSASPermissions.filter = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission character: " + c);
-            }
+    generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse("r"), resourceTypes = "sco", options = {}) {
+        if (!(this.credential instanceof StorageSharedKeyCredential)) {
+            throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential");
         }
-        return accountSASPermissions;
-    };
-    /**
-     * Produces the SAS permissions string for an Azure Storage account.
-     * Call this method to set AccountSASSignatureValues Permissions field.
-     *
-     * Using this method will guarantee the resource types are in
-     * an order accepted by the service.
-     *
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-     *
-     * @returns {string}
-     * @memberof AccountSASPermissions
-     */
-    AccountSASPermissions.prototype.toString = function () {
-        // The order of the characters should be as specified here to ensure correctness:
-        // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-        // Use a string array instead of string concatenating += operator for performance
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
+        if (expiresOn === undefined) {
+            const now = new Date();
+            expiresOn = new Date(now.getTime() + 3600 * 1000);
         }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.filter) {
-            permissions.push("f");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        if (this.list) {
-            permissions.push("l");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.update) {
-            permissions.push("u");
-        }
-        if (this.process) {
-            permissions.push("p");
-        }
-        return permissions.join("");
-    };
-    return AccountSASPermissions;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the
- * values are set, this should be serialized with toString and set as the resources field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
- * the order of the resources is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASResourceTypes
- */
-var AccountSASResourceTypes = /** @class */ (function () {
-    function AccountSASResourceTypes() {
-        /**
-         * Permission to access service level APIs granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.service = false;
-        /**
-         * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.container = false;
-        /**
-         * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASResourceTypes
-         */
-        this.object = false;
+        const sas = generateAccountSASQueryParameters(Object.assign({ permissions,
+            expiresOn,
+            resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
+        return appendToURLQuery(this.url, sas);
     }
-    /**
-     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid resource type.
-     *
-     * @static
-     * @param {string} resourceTypes
-     * @returns {AccountSASResourceTypes}
-     * @memberof AccountSASResourceTypes
-     */
-    AccountSASResourceTypes.parse = function (resourceTypes) {
-        var accountSASResourceTypes = new AccountSASResourceTypes();
-        for (var _i = 0, resourceTypes_1 = resourceTypes; _i < resourceTypes_1.length; _i++) {
-            var c = resourceTypes_1[_i];
-            switch (c) {
-                case "s":
-                    accountSASResourceTypes.service = true;
-                    break;
-                case "c":
-                    accountSASResourceTypes.container = true;
-                    break;
-                case "o":
-                    accountSASResourceTypes.object = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid resource type: " + c);
-            }
-        }
-        return accountSASResourceTypes;
-    };
-    /**
-     * Converts the given resource types to a string.
-     *
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
-     *
-     * @returns {string}
-     * @memberof AccountSASResourceTypes
-     */
-    AccountSASResourceTypes.prototype.toString = function () {
-        var resourceTypes = [];
-        if (this.service) {
-            resourceTypes.push("s");
-        }
-        if (this.container) {
-            resourceTypes.push("c");
-        }
-        if (this.object) {
-            resourceTypes.push("o");
-        }
-        return resourceTypes.join("");
-    };
-    return AccountSASResourceTypes;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value
- * to true means that any SAS which uses these permissions will grant access to that service. Once all the
- * values are set, this should be serialized with toString and set as the services field on an
- * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
- * the order of the services is particular and this class guarantees correctness.
- *
- * @export
- * @class AccountSASServices
- */
-var AccountSASServices = /** @class */ (function () {
-    function AccountSASServices() {
-        /**
-         * Permission to access blob resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.blob = false;
-        /**
-         * Permission to access file resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.file = false;
-        /**
-         * Permission to access queue resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.queue = false;
-        /**
-         * Permission to access table resources granted.
-         *
-         * @type {boolean}
-         * @memberof AccountSASServices
-         */
-        this.table = false;
-    }
-    /**
-     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid service.
-     *
-     * @static
-     * @param {string} services
-     * @returns {AccountSASServices}
-     * @memberof AccountSASServices
-     */
-    AccountSASServices.parse = function (services) {
-        var accountSASServices = new AccountSASServices();
-        for (var _i = 0, services_1 = services; _i < services_1.length; _i++) {
-            var c = services_1[_i];
-            switch (c) {
-                case "b":
-                    accountSASServices.blob = true;
-                    break;
-                case "f":
-                    accountSASServices.file = true;
-                    break;
-                case "q":
-                    accountSASServices.queue = true;
-                    break;
-                case "t":
-                    accountSASServices.table = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid service character: " + c);
-            }
-        }
-        return accountSASServices;
-    };
-    /**
-     * Converts the given services to a string.
-     *
-     * @returns {string}
-     * @memberof AccountSASServices
-     */
-    AccountSASServices.prototype.toString = function () {
-        var services = [];
-        if (this.blob) {
-            services.push("b");
-        }
-        if (this.table) {
-            services.push("t");
-        }
-        if (this.queue) {
-            services.push("q");
-        }
-        if (this.file) {
-            services.push("f");
-        }
-        return services.join("");
-    };
-    return AccountSASServices;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * Generate SasIPRange format string. For example:
- *
- * "8.8.8.8" or "1.1.1.1-255.255.255.255"
- *
- * @export
- * @param {SasIPRange} ipRange
- * @returns {string}
- */
-function ipRangeToString(ipRange) {
-    return ipRange.end ? ipRange.start + "-" + ipRange.end : ipRange.start;
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-(function (SASProtocol) {
-    /**
-     * Protocol that allows HTTPS only
-     */
-    SASProtocol["Https"] = "https";
-    /**
-     * Protocol that allows both HTTPS and HTTP
-     */
-    SASProtocol["HttpsAndHttp"] = "https,http";
-})(exports.SASProtocol || (exports.SASProtocol = {}));
-/**
- * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly
- * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}
- * types. Once generated, it can be encoded into a {@code String} and appended to a URL directly (though caution should
- * be taken here in case there are existing query parameters, which might affect the appropriate means of appending
- * these query parameters).
- *
- * NOTE: Instances of this class are immutable.
- *
- * @export
- * @class SASQueryParameters
- */
-var SASQueryParameters = /** @class */ (function () {
-    /**
-     * Creates an instance of SASQueryParameters.
-     *
-     * @param {string} version Representing the storage version
-     * @param {string} signature Representing the signature for the SAS token
-     * @param {string} [permissions] Representing the storage permissions
-     * @param {string} [services] Representing the storage services being accessed (only for Account SAS)
-     * @param {string} [resourceTypes] Representing the storage resource types being accessed (only for Account SAS)
-     * @param {SASProtocol} [protocol] Representing the allowed HTTP protocol(s)
-     * @param {Date} [startsOn] Representing the start time for this SAS token
-     * @param {Date} [expiresOn] Representing the expiry time for this SAS token
-     * @param {SasIPRange} [ipRange] Representing the range of valid IP addresses for this SAS token
-     * @param {string} [identifier] Representing the signed identifier (only for Service SAS)
-     * @param {string} [resource] Representing the storage container or blob (only for Service SAS)
-     * @param {string} [cacheControl] Representing the cache-control header (only for Blob/File Service SAS)
-     * @param {string} [contentDisposition] Representing the content-disposition header (only for Blob/File Service SAS)
-     * @param {string} [contentEncoding] Representing the content-encoding header (only for Blob/File Service SAS)
-     * @param {string} [contentLanguage] Representing the content-language header (only for Blob/File Service SAS)
-     * @param {string} [contentType] Representing the content-type header (only for Blob/File Service SAS)
-     * @param {userDelegationKey} [userDelegationKey] Representing the user delegation key properties
-     * @memberof SASQueryParameters
-     */
-    function SASQueryParameters(version, signature, permissions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey) {
-        this.version = version;
-        this.services = services;
-        this.resourceTypes = resourceTypes;
-        this.expiresOn = expiresOn;
-        this.permissions = permissions;
-        this.protocol = protocol;
-        this.startsOn = startsOn;
-        this.ipRangeInner = ipRange;
-        this.identifier = identifier;
-        this.resource = resource;
-        this.signature = signature;
-        this.cacheControl = cacheControl;
-        this.contentDisposition = contentDisposition;
-        this.contentEncoding = contentEncoding;
-        this.contentLanguage = contentLanguage;
-        this.contentType = contentType;
-        if (userDelegationKey) {
-            this.signedOid = userDelegationKey.signedObjectId;
-            this.signedTenantId = userDelegationKey.signedTenantId;
-            this.signedStartsOn = userDelegationKey.signedStartsOn;
-            this.signedExpiresOn = userDelegationKey.signedExpiresOn;
-            this.signedService = userDelegationKey.signedService;
-            this.signedVersion = userDelegationKey.signedVersion;
-        }
-    }
-    Object.defineProperty(SASQueryParameters.prototype, "ipRange", {
-        /**
-         * Optional. IP range allowed for this SAS.
-         *
-         * @readonly
-         * @type {(SasIPRange | undefined)}
-         * @memberof SASQueryParameters
-         */
-        get: function () {
-            if (this.ipRangeInner) {
-                return {
-                    end: this.ipRangeInner.end,
-                    start: this.ipRangeInner.start
-                };
-            }
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    /**
-     * Encodes all SAS query parameters into a string that can be appended to a URL.
-     *
-     * @returns {string}
-     * @memberof SASQueryParameters
-     */
-    SASQueryParameters.prototype.toString = function () {
-        var params = [
-            "sv",
-            "ss",
-            "srt",
-            "spr",
-            "st",
-            "se",
-            "sip",
-            "si",
-            "skoid",
-            "sktid",
-            "skt",
-            "ske",
-            "sks",
-            "skv",
-            "sr",
-            "sp",
-            "sig",
-            "rscc",
-            "rscd",
-            "rsce",
-            "rscl",
-            "rsct"
-        ];
-        var queries = [];
-        for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
-            var param = params_1[_i];
-            switch (param) {
-                case "sv":
-                    this.tryAppendQueryParameter(queries, param, this.version);
-                    break;
-                case "ss":
-                    this.tryAppendQueryParameter(queries, param, this.services);
-                    break;
-                case "srt":
-                    this.tryAppendQueryParameter(queries, param, this.resourceTypes);
-                    break;
-                case "spr":
-                    this.tryAppendQueryParameter(queries, param, this.protocol);
-                    break;
-                case "st":
-                    this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);
-                    break;
-                case "se":
-                    this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);
-                    break;
-                case "sip":
-                    this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);
-                    break;
-                case "si":
-                    this.tryAppendQueryParameter(queries, param, this.identifier);
-                    break;
-                case "skoid": // Signed object ID
-                    this.tryAppendQueryParameter(queries, param, this.signedOid);
-                    break;
-                case "sktid": // Signed tenant ID
-                    this.tryAppendQueryParameter(queries, param, this.signedTenantId);
-                    break;
-                case "skt": // Signed key start time
-                    this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);
-                    break;
-                case "ske": // Signed key expiry time
-                    this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);
-                    break;
-                case "sks": // Signed key service
-                    this.tryAppendQueryParameter(queries, param, this.signedService);
-                    break;
-                case "skv": // Signed key version
-                    this.tryAppendQueryParameter(queries, param, this.signedVersion);
-                    break;
-                case "sr":
-                    this.tryAppendQueryParameter(queries, param, this.resource);
-                    break;
-                case "sp":
-                    this.tryAppendQueryParameter(queries, param, this.permissions);
-                    break;
-                case "sig":
-                    this.tryAppendQueryParameter(queries, param, this.signature);
-                    break;
-                case "rscc":
-                    this.tryAppendQueryParameter(queries, param, this.cacheControl);
-                    break;
-                case "rscd":
-                    this.tryAppendQueryParameter(queries, param, this.contentDisposition);
-                    break;
-                case "rsce":
-                    this.tryAppendQueryParameter(queries, param, this.contentEncoding);
-                    break;
-                case "rscl":
-                    this.tryAppendQueryParameter(queries, param, this.contentLanguage);
-                    break;
-                case "rsct":
-                    this.tryAppendQueryParameter(queries, param, this.contentType);
-                    break;
-            }
-        }
-        return queries.join("&");
-    };
-    /**
-     * A private helper method used to filter and append query key/value pairs into an array.
-     *
-     * @private
-     * @param {string[]} queries
-     * @param {string} key
-     * @param {string} [value]
-     * @returns {void}
-     * @memberof SASQueryParameters
-     */
-    SASQueryParameters.prototype.tryAppendQueryParameter = function (queries, key, value) {
-        if (!value) {
-            return;
-        }
-        key = encodeURIComponent(key);
-        value = encodeURIComponent(value);
-        if (key.length > 0 && value.length > 0) {
-            queries.push(key + "=" + value);
-        }
-    };
-    return SASQueryParameters;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
- * REST request.
- *
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
- *
- * @param {AccountSASSignatureValues} accountSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- * @memberof AccountSASSignatureValues
- */
-function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
-    var version = accountSASSignatureValues.version
-        ? accountSASSignatureValues.version
-        : SERVICE_VERSION;
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (accountSASSignatureValues.permissions &&
-        accountSASSignatureValues.permissions.filter &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
-    }
-    var parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
-    var parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
-    var parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
-    var stringToSign = [
-        sharedKeyCredential.accountName,
-        parsedPermissions,
-        parsedServices,
-        parsedResourceTypes,
-        accountSASSignatureValues.startsOn
-            ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)
-            : "",
-        truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),
-        accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : "",
-        accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : "",
-        version,
-        "" // Account SAS requires an additional newline character
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
-}
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting
- * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all
- * the values are set, this should be serialized with toString and set as the permissions field on a
- * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class BlobSASPermissions
- */
-var BlobSASPermissions = /** @class */ (function () {
-    function BlobSASPermissions() {
-        /**
-         * Specifies Read access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.read = false;
-        /**
-         * Specifies Add access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.add = false;
-        /**
-         * Specifies Create access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.create = false;
-        /**
-         * Specifies Write access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.write = false;
-        /**
-         * Specifies Delete access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Specifies Delete version access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof BlobSASPermissions
-         */
-        this.tag = false;
-    }
-    /**
-     * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid permission.
-     *
-     * @static
-     * @param {string} permissions
-     * @returns {BlobSASPermissions}
-     * @memberof BlobSASPermissions
-     */
-    BlobSASPermissions.parse = function (permissions) {
-        var blobSASPermissions = new BlobSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
-            switch (char) {
-                case "r":
-                    blobSASPermissions.read = true;
-                    break;
-                case "a":
-                    blobSASPermissions.add = true;
-                    break;
-                case "c":
-                    blobSASPermissions.create = true;
-                    break;
-                case "w":
-                    blobSASPermissions.write = true;
-                    break;
-                case "d":
-                    blobSASPermissions.delete = true;
-                    break;
-                case "x":
-                    blobSASPermissions.deleteVersion = true;
-                    break;
-                case "t":
-                    blobSASPermissions.tag = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission: " + char);
-            }
-        }
-        return blobSASPermissions;
-    };
-    /**
-     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
-     * order accepted by the service.
-     *
-     * @returns {string} A string which represents the BlobSASPermissions
-     * @memberof BlobSASPermissions
-     */
-    BlobSASPermissions.prototype.toString = function () {
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        return permissions.join("");
-    };
-    return BlobSASPermissions;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-/**
- * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.
- * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.
- * Once all the values are set, this should be serialized with toString and set as the permissions field on a
- * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
- * the order of the permissions is particular and this class guarantees correctness.
- *
- * @export
- * @class ContainerSASPermissions
- */
-var ContainerSASPermissions = /** @class */ (function () {
-    function ContainerSASPermissions() {
-        /**
-         * Specifies Read access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.read = false;
-        /**
-         * Specifies Add access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.add = false;
-        /**
-         * Specifies Create access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.create = false;
-        /**
-         * Specifies Write access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.write = false;
-        /**
-         * Specifies Delete access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.delete = false;
-        /**
-         * Specifies Delete version access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.deleteVersion = false;
-        /**
-         * Specifies List access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.list = false;
-        /**
-         * Specfies Tag access granted.
-         *
-         * @type {boolean}
-         * @memberof ContainerSASPermissions
-         */
-        this.tag = false;
-    }
-    /**
-     * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an
-     * Error if it encounters a character that does not correspond to a valid permission.
-     *
-     * @static
-     * @param {string} permissions
-     * @returns {ContainerSASPermissions}
-     * @memberof ContainerSASPermissions
-     */
-    ContainerSASPermissions.parse = function (permissions) {
-        var containerSASPermissions = new ContainerSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
-            switch (char) {
-                case "r":
-                    containerSASPermissions.read = true;
-                    break;
-                case "a":
-                    containerSASPermissions.add = true;
-                    break;
-                case "c":
-                    containerSASPermissions.create = true;
-                    break;
-                case "w":
-                    containerSASPermissions.write = true;
-                    break;
-                case "d":
-                    containerSASPermissions.delete = true;
-                    break;
-                case "l":
-                    containerSASPermissions.list = true;
-                    break;
-                case "t":
-                    containerSASPermissions.tag = true;
-                    break;
-                case "x":
-                    containerSASPermissions.deleteVersion = true;
-                    break;
-                default:
-                    throw new RangeError("Invalid permission " + char);
-            }
-        }
-        return containerSASPermissions;
-    };
-    /**
-     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
-     * order accepted by the service.
-     *
-     * The order of the characters should be as specified here to ensure correctness.
-     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
-     *
-     * @returns {string}
-     * @memberof ContainerSASPermissions
-     */
-    ContainerSASPermissions.prototype.toString = function () {
-        var permissions = [];
-        if (this.read) {
-            permissions.push("r");
-        }
-        if (this.add) {
-            permissions.push("a");
-        }
-        if (this.create) {
-            permissions.push("c");
-        }
-        if (this.write) {
-            permissions.push("w");
-        }
-        if (this.delete) {
-            permissions.push("d");
-        }
-        if (this.deleteVersion) {
-            permissions.push("x");
-        }
-        if (this.list) {
-            permissions.push("l");
-        }
-        if (this.tag) {
-            permissions.push("t");
-        }
-        return permissions.join("");
-    };
-    return ContainerSASPermissions;
-}());
-
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- *
- * UserDelegationKeyCredential is only used for generation of user delegation SAS.
- * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
- *
- * @export
- * @class UserDelegationKeyCredential
- */
-var UserDelegationKeyCredential = /** @class */ (function () {
-    /**
-     * Creates an instance of UserDelegationKeyCredential.
-     * @param {string} accountName
-     * @param {UserDelegationKey} userDelegationKey
-     * @memberof UserDelegationKeyCredential
-     */
-    function UserDelegationKeyCredential(accountName, userDelegationKey) {
-        this.accountName = accountName;
-        this.userDelegationKey = userDelegationKey;
-        this.key = Buffer.from(userDelegationKey.value, "base64");
-    }
-    /**
-     * Generates a hash signature for an HTTP request or for a SAS.
-     *
-     * @param {string} stringToSign
-     * @returns {string}
-     * @memberof UserDelegationKeyCredential
-     */
-    UserDelegationKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
-        // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
-        return crypto.createHmac("sha256", this.key)
-            .update(stringToSign, "utf8")
-            .digest("base64");
-    };
-    return UserDelegationKeyCredential;
-}());
-
-// Copyright (c) Microsoft Corporation. All rights reserved.
-function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
-        ? sharedKeyCredentialOrUserDelegationKey
-        : undefined;
-    var userDelegationKeyCredential;
-    if (sharedKeyCredential === undefined && accountName !== undefined) {
-        userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
-    }
-    if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {
-        throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.");
-    }
-    // Version 2019-12-12 adds support for the blob tags permission.
-    // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
-    // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
-    if (version >= "2018-11-09") {
-        if (sharedKeyCredential !== undefined) {
-            return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);
-        }
-        else {
-            return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);
-        }
-    }
-    if (version >= "2015-04-05") {
-        if (sharedKeyCredential !== undefined) {
-            return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);
-        }
-        else {
-            throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.");
-        }
-    }
-    throw new RangeError("'version' must be >= '2015-04-05'.");
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: When identifier is not provided, permissions and expiresOn are required.
- * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
- * this constructor.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {
-    if (!blobSASSignatureValues.identifier &&
-        !blobSASSignatureValues.permissions &&
-        !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.snapshotTime) {
-        throw RangeError("'version' must be >= '2018-11-09' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.versionId) {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        blobSASSignatureValues.identifier,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
-        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
-        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
-        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
-        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: When identifier is not provided, permissions and expiresOn are required.
- * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
- * this constructor.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {StorageSharedKeyCredential} sharedKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {
-    if (!blobSASSignatureValues.identifier &&
-        !blobSASSignatureValues.permissions &&
-        !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
-        throw RangeError("Must provide 'blobName' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
-        throw RangeError("Must provide 'blobName' when provided 'versionId'.");
-    }
-    var timestamp = blobSASSignatureValues.snapshotTime;
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-        if (blobSASSignatureValues.snapshotTime) {
-            resource = "bs";
-        }
-        else if (blobSASSignatureValues.versionId) {
-            resource = "bv";
-            timestamp = blobSASSignatureValues.versionId;
-        }
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        blobSASSignatureValues.identifier,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        resource,
-        timestamp,
-        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : "",
-        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : "",
-        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : "",
-        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
-        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
-    ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
-}
-/**
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
- * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.
- *
- * Creates an instance of SASQueryParameters.
- *
- * Only accepts required settings needed to create a SAS. For optional settings please
- * set corresponding properties directly, such as permissions, startsOn and identifier.
- *
- * WARNING: identifier will be ignored, permissions and expiresOn are required.
- *
- * @param {BlobSASSignatureValues} blobSASSignatureValues
- * @param {UserDelegationKeyCredential} userDelegationKeyCredential
- * @returns {SASQueryParameters}
- */
-function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {
-    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
-        throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
-    }
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    if (blobSASSignatureValues.versionId && version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'versionId'.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.deleteVersion &&
-        version < "2019-10-10") {
-        throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.");
-    }
-    if (blobSASSignatureValues.permissions &&
-        blobSASSignatureValues.permissions.tag &&
-        version < "2019-12-12") {
-        throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.");
-    }
-    var resource = "c";
-    var verifiedPermissions;
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
-        throw RangeError("Must provide 'blobName' when provided 'snapshotTime'.");
-    }
-    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
-        throw RangeError("Must provide 'blobName' when provided 'versionId'.");
-    }
-    var timestamp = blobSASSignatureValues.snapshotTime;
-    if (blobSASSignatureValues.blobName) {
-        resource = "b";
-        if (blobSASSignatureValues.snapshotTime) {
-            resource = "bs";
-        }
-        else if (blobSASSignatureValues.versionId) {
-            resource = "bv";
-            timestamp = blobSASSignatureValues.versionId;
-        }
-    }
-    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    if (blobSASSignatureValues.permissions) {
-        if (blobSASSignatureValues.blobName) {
-            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-        else {
-            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
-        }
-    }
-    // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
-        verifiedPermissions ? verifiedPermissions : "",
-        blobSASSignatureValues.startsOn
-            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
-            : "",
-        blobSASSignatureValues.expiresOn
-            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)
-            : "",
-        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),
-        userDelegationKeyCredential.userDelegationKey.signedObjectId,
-        userDelegationKeyCredential.userDelegationKey.signedTenantId,
-        userDelegationKeyCredential.userDelegationKey.signedStartsOn
-            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
-            : "",
-        userDelegationKeyCredential.userDelegationKey.signedExpiresOn
-            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
-            : "",
-        userDelegationKeyCredential.userDelegationKey.signedService,
-        userDelegationKeyCredential.userDelegationKey.signedVersion,
-        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : "",
-        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : "",
-        version,
-        resource,
-        timestamp,
-        blobSASSignatureValues.cacheControl,
-        blobSASSignatureValues.contentDisposition,
-        blobSASSignatureValues.contentEncoding,
-        blobSASSignatureValues.contentLanguage,
-        blobSASSignatureValues.contentType
-    ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
-    return new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
-}
-function getCanonicalName(accountName, containerName, blobName) {
-    // Container: "/blob/account/containerName"
-    // Blob:      "/blob/account/containerName/blobName"
-    var elements = ["/blob/" + accountName + "/" + containerName];
-    if (blobName) {
-        elements.push("/" + blobName);
-    }
-    return elements.join("");
 }
 
 Object.defineProperty(exports, 'BaseRequestPolicy', {
@@ -33952,6 +33306,7 @@ exports.StorageSharedKeyCredential = StorageSharedKeyCredential;
 exports.StorageSharedKeyCredentialPolicy = StorageSharedKeyCredentialPolicy;
 exports.generateAccountSASQueryParameters = generateAccountSASQueryParameters;
 exports.generateBlobSASQueryParameters = generateBlobSASQueryParameters;
+exports.isPipelineLike = isPipelineLike;
 exports.logger = logger;
 exports.newPipeline = newPipeline;
 //# sourceMappingURL=index.js.map
@@ -33972,10 +33327,33 @@ exports.newPipeline = newPipeline;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const path = __webpack_require__(622);
-const pathHelper = __webpack_require__(972);
+exports.Path = void 0;
+const path = __importStar(__webpack_require__(622));
+const pathHelper = __importStar(__webpack_require__(972));
+const assert_1 = __importDefault(__webpack_require__(357));
 const IS_WINDOWS = process.platform === 'win32';
 /**
  * Helper class for parsing paths into segments
@@ -33989,7 +33367,7 @@ class Path {
         this.segments = [];
         // String
         if (typeof itemPath === 'string') {
-            assert(itemPath, `Parameter 'itemPath' must not be empty`);
+            assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`);
             // Normalize slashes and trim unnecessary trailing slash
             itemPath = pathHelper.safeTrimTrailingSeparator(itemPath);
             // Not rooted
@@ -34016,24 +33394,24 @@ class Path {
         // Array
         else {
             // Must not be empty
-            assert(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
+            assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`);
             // Each segment
             for (let i = 0; i < itemPath.length; i++) {
                 let segment = itemPath[i];
                 // Must not be empty
-                assert(segment, `Parameter 'itemPath' must not contain any empty segments`);
+                assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`);
                 // Normalize slashes
                 segment = pathHelper.normalizeSeparators(itemPath[i]);
                 // Root segment
                 if (i === 0 && pathHelper.hasRoot(segment)) {
                     segment = pathHelper.safeTrimTrailingSeparator(segment);
-                    assert(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
+                    assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`);
                     this.segments.push(segment);
                 }
                 // All other segments
                 else {
                     // Must not contain slash
-                    assert(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
+                    assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`);
                     this.segments.push(segment);
                 }
             }
@@ -34107,7 +33485,7 @@ exports.Path = Path;
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-const punycode = __webpack_require__(213);
+const punycode = __webpack_require__(815);
 const urlParse = __webpack_require__(835).parse;
 const util = __webpack_require__(669);
 const pubsuffix = __webpack_require__(562);
@@ -35750,11 +35128,133 @@ exports.PrefixSecurityEnum = PrefixSecurityEnum;
 
 
 /***/ }),
-/* 394 */,
+/* 394 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ProxyTracerProvider = void 0;
+var ProxyTracer_1 = __webpack_require__(398);
+var NoopTracerProvider_1 = __webpack_require__(162);
+var NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();
+/**
+ * Tracer provider which provides {@link ProxyTracer}s.
+ *
+ * Before a delegate is set, tracers provided are NoOp.
+ *   When a delegate is set, traces are provided from the delegate.
+ *   When a delegate is set after tracers have already been provided,
+ *   all tracers already provided will use the provided delegate implementation.
+ */
+var ProxyTracerProvider = /** @class */ (function () {
+    function ProxyTracerProvider() {
+    }
+    /**
+     * Get a {@link ProxyTracer}
+     */
+    ProxyTracerProvider.prototype.getTracer = function (name, version) {
+        var _a;
+        return ((_a = this.getDelegateTracer(name, version)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version));
+    };
+    ProxyTracerProvider.prototype.getDelegate = function () {
+        var _a;
+        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;
+    };
+    /**
+     * Set the delegate tracer provider
+     */
+    ProxyTracerProvider.prototype.setDelegate = function (delegate) {
+        this._delegate = delegate;
+    };
+    ProxyTracerProvider.prototype.getDelegateTracer = function (name, version) {
+        var _a;
+        return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version);
+    };
+    return ProxyTracerProvider;
+}());
+exports.ProxyTracerProvider = ProxyTracerProvider;
+//# sourceMappingURL=ProxyTracerProvider.js.map
+
+/***/ }),
 /* 395 */,
 /* 396 */,
 /* 397 */,
-/* 398 */,
+/* 398 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ProxyTracer = void 0;
+var NoopTracer_1 = __webpack_require__(151);
+var NOOP_TRACER = new NoopTracer_1.NoopTracer();
+/**
+ * Proxy tracer provided by the proxy tracer provider
+ */
+var ProxyTracer = /** @class */ (function () {
+    function ProxyTracer(_provider, name, version) {
+        this._provider = _provider;
+        this.name = name;
+        this.version = version;
+    }
+    ProxyTracer.prototype.startSpan = function (name, options, context) {
+        return this._getTracer().startSpan(name, options, context);
+    };
+    ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {
+        var tracer = this._getTracer();
+        return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
+    };
+    /**
+     * Try to get a tracer from the proxy tracer provider.
+     * If the proxy tracer provider has no delegate, return a noop tracer.
+     */
+    ProxyTracer.prototype._getTracer = function () {
+        if (this._delegate) {
+            return this._delegate;
+        }
+        var tracer = this._provider.getDelegateTracer(this.name, this.version);
+        if (!tracer) {
+            return NOOP_TRACER;
+        }
+        this._delegate = tracer;
+        return this._delegate;
+    };
+    return ProxyTracer;
+}());
+exports.ProxyTracer = ProxyTracer;
+//# sourceMappingURL=ProxyTracer.js.map
+
+/***/ }),
 /* 399 */,
 /* 400 */,
 /* 401 */,
@@ -35789,296 +35289,7 @@ module.exports = require("crypto");
 /* 419 */,
 /* 420 */,
 /* 421 */,
-/* 422 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __createBinding = function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    };
-
-    __exportStar = function (m, exports) {
-        for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
-    };
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-        result["default"] = mod;
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 422 */,
 /* 423 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -36562,7 +35773,62 @@ function parallel(list, iterator, callback)
 
 
 /***/ }),
-/* 425 */,
+/* 425 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NoopContextManager = void 0;
+var context_1 = __webpack_require__(132);
+var NoopContextManager = /** @class */ (function () {
+    function NoopContextManager() {
+    }
+    NoopContextManager.prototype.active = function () {
+        return context_1.ROOT_CONTEXT;
+    };
+    NoopContextManager.prototype.with = function (_context, fn, thisArg) {
+        var args = [];
+        for (var _i = 3; _i < arguments.length; _i++) {
+            args[_i - 3] = arguments[_i];
+        }
+        return fn.call.apply(fn, __spreadArray([thisArg], args));
+    };
+    NoopContextManager.prototype.bind = function (_context, target) {
+        return target;
+    };
+    NoopContextManager.prototype.enable = function () {
+        return this;
+    };
+    NoopContextManager.prototype.disable = function () {
+        return this;
+    };
+    return NoopContextManager;
+}());
+exports.NoopContextManager = NoopContextManager;
+//# sourceMappingURL=NoopContextManager.js.map
+
+/***/ }),
 /* 426 */,
 /* 427 */,
 /* 428 */,
@@ -36573,14 +35839,27 @@ function parallel(list, iterator, callback)
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
     return result;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.issue = exports.issueCommand = void 0;
 const os = __importStar(__webpack_require__(87));
 const utils_1 = __webpack_require__(82);
 /**
@@ -36685,20 +35964,33 @@ const utils = __importStar(__webpack_require__(15));
 const constants_1 = __webpack_require__(931);
 function getTarPath(args, compressionMethod) {
     return __awaiter(this, void 0, void 0, function* () {
-        const IS_WINDOWS = process.platform === 'win32';
-        if (IS_WINDOWS) {
-            const systemTar = `${process.env['windir']}\\System32\\tar.exe`;
-            if (compressionMethod !== constants_1.CompressionMethod.Gzip) {
-                // We only use zstandard compression on windows when gnu tar is installed due to
-                // a bug with compressing large files with bsdtar + zstd
-                args.push('--force-local');
+        switch (process.platform) {
+            case 'win32': {
+                const systemTar = `${process.env['windir']}\\System32\\tar.exe`;
+                if (compressionMethod !== constants_1.CompressionMethod.Gzip) {
+                    // We only use zstandard compression on windows when gnu tar is installed due to
+                    // a bug with compressing large files with bsdtar + zstd
+                    args.push('--force-local');
+                }
+                else if (fs_1.existsSync(systemTar)) {
+                    return systemTar;
+                }
+                else if (yield utils.isGnuTarInstalled()) {
+                    args.push('--force-local');
+                }
+                break;
             }
-            else if (fs_1.existsSync(systemTar)) {
-                return systemTar;
-            }
-            else if (yield utils.isGnuTarInstalled()) {
-                args.push('--force-local');
+            case 'darwin': {
+                const gnuTar = yield io.which('gtar', false);
+                if (gnuTar) {
+                    // fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527
+                    args.push('--delay-directory-restore');
+                    return gnuTar;
+                }
+                break;
             }
+            default:
+                break;
         }
         return yield io.which('tar', true);
     });
@@ -36783,12 +36075,140 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) {
     });
 }
 exports.createTar = createTar;
+function listTar(archivePath, compressionMethod) {
+    return __awaiter(this, void 0, void 0, function* () {
+        // --d: Decompress.
+        // --long=#: Enables long distance matching with # bits.
+        // Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
+        // Using 30 here because we also support 32-bit self-hosted runners.
+        function getCompressionProgram() {
+            switch (compressionMethod) {
+                case constants_1.CompressionMethod.Zstd:
+                    return ['--use-compress-program', 'zstd -d --long=30'];
+                case constants_1.CompressionMethod.ZstdWithoutLong:
+                    return ['--use-compress-program', 'zstd -d'];
+                default:
+                    return ['-z'];
+            }
+        }
+        const args = [
+            ...getCompressionProgram(),
+            '-tf',
+            archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
+            '-P'
+        ];
+        yield execTar(args, compressionMethod);
+    });
+}
+exports.listTar = listTar;
 //# sourceMappingURL=tar.js.map
 
 /***/ }),
-/* 435 */,
+/* 435 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+var trace_flags_1 = __webpack_require__(975);
+exports.INVALID_SPANID = '0000000000000000';
+exports.INVALID_TRACEID = '00000000000000000000000000000000';
+exports.INVALID_SPAN_CONTEXT = {
+    traceId: exports.INVALID_TRACEID,
+    spanId: exports.INVALID_SPANID,
+    traceFlags: trace_flags_1.TraceFlags.NONE,
+};
+//# sourceMappingURL=invalid-span-constants.js.map
+
+/***/ }),
 /* 436 */,
-/* 437 */,
+/* 437 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NonRecordingSpan = void 0;
+var invalid_span_constants_1 = __webpack_require__(435);
+/**
+ * The NonRecordingSpan is the default {@link Span} that is used when no Span
+ * implementation is available. All operations are no-op including context
+ * propagation.
+ */
+var NonRecordingSpan = /** @class */ (function () {
+    function NonRecordingSpan(_spanContext) {
+        if (_spanContext === void 0) { _spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT; }
+        this._spanContext = _spanContext;
+    }
+    // Returns a SpanContext.
+    NonRecordingSpan.prototype.spanContext = function () {
+        return this._spanContext;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttribute = function (_key, _value) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttributes = function (_attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setStatus = function (_status) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.updateName = function (_name) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.end = function (_endTime) { };
+    // isRecording always returns false for NonRecordingSpan.
+    NonRecordingSpan.prototype.isRecording = function () {
+        return false;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.recordException = function (_exception, _time) { };
+    return NonRecordingSpan;
+}());
+exports.NonRecordingSpan = NonRecordingSpan;
+//# sourceMappingURL=NonRecordingSpan.js.map
+
+/***/ }),
 /* 438 */,
 /* 439 */,
 /* 440 */
@@ -36819,35 +36239,21 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.propagation = exports.metrics = exports.trace = exports.context = void 0;
-__exportStar(__webpack_require__(276), exports);
+exports.diag = exports.propagation = exports.trace = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.baggageEntryMetadataFromString = void 0;
+__exportStar(__webpack_require__(880), exports);
+var utils_1 = __webpack_require__(112);
+Object.defineProperty(exports, "baggageEntryMetadataFromString", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });
+__exportStar(__webpack_require__(452), exports);
 __exportStar(__webpack_require__(158), exports);
-__exportStar(__webpack_require__(2), exports);
-__exportStar(__webpack_require__(33), exports);
-__exportStar(__webpack_require__(744), exports);
-__exportStar(__webpack_require__(753), exports);
-__exportStar(__webpack_require__(278), exports);
-__exportStar(__webpack_require__(40), exports);
-__exportStar(__webpack_require__(318), exports);
-__exportStar(__webpack_require__(551), exports);
-__exportStar(__webpack_require__(659), exports);
-__exportStar(__webpack_require__(702), exports);
-__exportStar(__webpack_require__(43), exports);
-__exportStar(__webpack_require__(625), exports);
-__exportStar(__webpack_require__(450), exports);
-__exportStar(__webpack_require__(107), exports);
-__exportStar(__webpack_require__(189), exports);
+__exportStar(__webpack_require__(893), exports);
+__exportStar(__webpack_require__(881), exports);
 __exportStar(__webpack_require__(906), exports);
-__exportStar(__webpack_require__(727), exports);
-__exportStar(__webpack_require__(165), exports);
-__exportStar(__webpack_require__(851), exports);
 __exportStar(__webpack_require__(95), exports);
-__exportStar(__webpack_require__(767), exports);
-__exportStar(__webpack_require__(151), exports);
-__exportStar(__webpack_require__(162), exports);
+__exportStar(__webpack_require__(398), exports);
+__exportStar(__webpack_require__(394), exports);
 __exportStar(__webpack_require__(781), exports);
 __exportStar(__webpack_require__(340), exports);
 __exportStar(__webpack_require__(607), exports);
@@ -36855,30 +36261,42 @@ __exportStar(__webpack_require__(670), exports);
 __exportStar(__webpack_require__(586), exports);
 __exportStar(__webpack_require__(220), exports);
 __exportStar(__webpack_require__(932), exports);
-__exportStar(__webpack_require__(839), exports);
 __exportStar(__webpack_require__(975), exports);
-__exportStar(__webpack_require__(70), exports);
+__exportStar(__webpack_require__(207), exports);
 __exportStar(__webpack_require__(694), exports);
 __exportStar(__webpack_require__(695), exports);
-var context_base_1 = __webpack_require__(231);
-Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_base_1.Context; } });
+var spancontext_utils_1 = __webpack_require__(629);
+Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });
+Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });
+Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });
+var invalid_span_constants_1 = __webpack_require__(435);
+Object.defineProperty(exports, "INVALID_SPANID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });
+Object.defineProperty(exports, "INVALID_TRACEID", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });
+Object.defineProperty(exports, "INVALID_SPAN_CONTEXT", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });
+__exportStar(__webpack_require__(132), exports);
+__exportStar(__webpack_require__(845), exports);
 var context_1 = __webpack_require__(492);
 /** Entrypoint for context API */
 exports.context = context_1.ContextAPI.getInstance();
 var trace_1 = __webpack_require__(875);
 /** Entrypoint for trace API */
 exports.trace = trace_1.TraceAPI.getInstance();
-var metrics_1 = __webpack_require__(136);
-/** Entrypoint for metrics API */
-exports.metrics = metrics_1.MetricsAPI.getInstance();
 var propagation_1 = __webpack_require__(22);
 /** Entrypoint for propagation API */
 exports.propagation = propagation_1.PropagationAPI.getInstance();
+var diag_1 = __webpack_require__(118);
+/**
+ * Entrypoint for Diag API.
+ * Defines Diagnostic handler used for internal diagnostic logging operations.
+ * The default provides a Noop DiagLogger implementation which may be changed via the
+ * diag.setLogger(logger: DiagLogger) function.
+ */
+exports.diag = diag_1.DiagAPI.instance();
 exports.default = {
     trace: exports.trace,
-    metrics: exports.metrics,
     context: exports.context,
     propagation: exports.propagation,
+    diag: exports.diag,
 };
 //# sourceMappingURL=index.js.map
 
@@ -36905,7 +36323,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
     __setModuleDefault(result, mod);
     return result;
 };
@@ -36963,7 +36381,7 @@ function getInputAsArray(name, options) {
     return core
         .getInput(name, options)
         .split("\n")
-        .map(s => s.replace(/^\!\s+/, '!').trim())
+        .map(s => s.replace(/^!\s+/, "!").trim())
         .filter(x => x !== "")
         .sort();
 }
@@ -36985,46 +36403,7 @@ exports.getInputAsInt = getInputAsInt;
 /* 447 */,
 /* 448 */,
 /* 449 */,
-/* 450 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;
-var NoopMeter_1 = __webpack_require__(625);
-/**
- * An implementation of the {@link MeterProvider} which returns an impotent Meter
- * for all calls to `getMeter`
- */
-var NoopMeterProvider = /** @class */ (function () {
-    function NoopMeterProvider() {
-    }
-    NoopMeterProvider.prototype.getMeter = function (_name, _version) {
-        return NoopMeter_1.NOOP_METER;
-    };
-    return NoopMeterProvider;
-}());
-exports.NoopMeterProvider = NoopMeterProvider;
-exports.NOOP_METER_PROVIDER = new NoopMeterProvider();
-//# sourceMappingURL=NoopMeterProvider.js.map
-
-/***/ }),
+/* 450 */,
 /* 451 */
 /***/ (function(module) {
 
@@ -37089,7 +36468,30 @@ exports.NOOP_METER_PROVIDER = new NoopMeterProvider();
 
 
 /***/ }),
-/* 452 */,
+/* 452 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=Exception.js.map
+
+/***/ }),
 /* 453 */,
 /* 454 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -37104,6 +36506,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
 var Stream = _interopDefault(__webpack_require__(794));
 var http = _interopDefault(__webpack_require__(605));
 var Url = _interopDefault(__webpack_require__(835));
+var whatwgUrl = _interopDefault(__webpack_require__(70));
 var https = _interopDefault(__webpack_require__(211));
 var zlib = _interopDefault(__webpack_require__(761));
 
@@ -38238,11 +37641,32 @@ Object.defineProperty(Response.prototype, Symbol.toStringTag, {
 });
 
 const INTERNALS$2 = Symbol('Request internals');
+const URL = Url.URL || whatwgUrl.URL;
 
 // fix an issue where "format", "parse" aren't a named export for node <10
 const parse_url = Url.parse;
 const format_url = Url.format;
 
+/**
+ * Wrapper around `new URL` to handle arbitrary URLs
+ *
+ * @param  {string} urlStr
+ * @return {void}
+ */
+function parseURL(urlStr) {
+	/*
+ 	Check whether the URL is absolute or not
+ 		Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ 	Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+	if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+		urlStr = new URL(urlStr).toString();
+	}
+
+	// Fallback to old implementation for arbitrary URLs
+	return parse_url(urlStr);
+}
+
 const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
 
 /**
@@ -38279,14 +37703,14 @@ class Request {
 				// in order to support Node.js' Url objects; though WHATWG's URL objects
 				// will fall into this branch also (since their `toString()` will return
 				// `href` property anyway)
-				parsedURL = parse_url(input.href);
+				parsedURL = parseURL(input.href);
 			} else {
 				// coerce input to a string before attempting to parse
-				parsedURL = parse_url(`${input}`);
+				parsedURL = parseURL(`${input}`);
 			}
 			input = {};
 		} else {
-			parsedURL = parse_url(input.url);
+			parsedURL = parseURL(input.url);
 		}
 
 		let method = init.method || input.method || 'GET';
@@ -38998,6 +38422,25 @@ module.exports = '4.0.0'
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -39007,19 +38450,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
 const command_1 = __webpack_require__(431);
 const file_command_1 = __webpack_require__(102);
 const utils_1 = __webpack_require__(82);
 const os = __importStar(__webpack_require__(87));
 const path = __importStar(__webpack_require__(622));
+const oidc_utils_1 = __webpack_require__(742);
 /**
  * The code to exit an action
  */
@@ -39081,7 +38519,9 @@ function addPath(inputPath) {
 }
 exports.addPath = addPath;
 /**
- * Gets the value of an input.  The value is also trimmed.
+ * Gets the value of an input.
+ * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
+ * Returns an empty string if the value is not defined.
  *
  * @param     name     name of the input to get
  * @param     options  optional. See InputOptions.
@@ -39092,9 +38532,49 @@ function getInput(name, options) {
     if (options && options.required && !val) {
         throw new Error(`Input required and not supplied: ${name}`);
     }
+    if (options && options.trimWhitespace === false) {
+        return val;
+    }
     return val.trim();
 }
 exports.getInput = getInput;
+/**
+ * Gets the values of an multiline input.  Each value is also trimmed.
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   string[]
+ *
+ */
+function getMultilineInput(name, options) {
+    const inputs = getInput(name, options)
+        .split('\n')
+        .filter(x => x !== '');
+    return inputs;
+}
+exports.getMultilineInput = getMultilineInput;
+/**
+ * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
+ * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
+ * The return value is also in boolean type.
+ * ref: https://yaml.org/spec/1.2/spec.html#id2804923
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   boolean
+ */
+function getBooleanInput(name, options) {
+    const trueValue = ['true', 'True', 'TRUE'];
+    const falseValue = ['false', 'False', 'FALSE'];
+    const val = getInput(name, options);
+    if (trueValue.includes(val))
+        return true;
+    if (falseValue.includes(val))
+        return false;
+    throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` +
+        `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
+}
+exports.getBooleanInput = getBooleanInput;
 /**
  * Sets the value of an output.
  *
@@ -39103,6 +38583,7 @@ exports.getInput = getInput;
  */
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
 function setOutput(name, value) {
+    process.stdout.write(os.EOL);
     command_1.issueCommand('set-output', { name }, value);
 }
 exports.setOutput = setOutput;
@@ -39149,19 +38630,30 @@ exports.debug = debug;
 /**
  * Adds an error issue
  * @param message error issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
  */
-function error(message) {
-    command_1.issue('error', message instanceof Error ? message.toString() : message);
+function error(message, properties = {}) {
+    command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
 }
 exports.error = error;
 /**
- * Adds an warning issue
+ * Adds a warning issue
  * @param message warning issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
  */
-function warning(message) {
-    command_1.issue('warning', message instanceof Error ? message.toString() : message);
+function warning(message, properties = {}) {
+    command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
 }
 exports.warning = warning;
+/**
+ * Adds a notice issue
+ * @param message notice issue message. Errors will be converted to string via toString()
+ * @param properties optional properties to add to the annotation.
+ */
+function notice(message, properties = {}) {
+    command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
+}
+exports.notice = notice;
 /**
  * Writes info to log with console.log.
  * @param message info message
@@ -39234,6 +38726,12 @@ function getState(name) {
     return process.env[`STATE_${name}`] || '';
 }
 exports.getState = getState;
+function getIDToken(aud) {
+    return __awaiter(this, void 0, void 0, function* () {
+        return yield oidc_utils_1.OidcClient.getIDToken(aud);
+    });
+}
+exports.getIDToken = getIDToken;
 //# sourceMappingURL=core.js.map
 
 /***/ }),
@@ -39380,8 +38878,71 @@ exports.getState = getState;
 /* 479 */,
 /* 480 */,
 /* 481 */,
-/* 482 */,
-/* 483 */,
+/* 482 */
+/***/ (function(module) {
+
+module.exports = [[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]];
+
+/***/ }),
+/* 483 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.deleteBaggage = exports.setBaggage = exports.getBaggage = void 0;
+var context_1 = __webpack_require__(132);
+/**
+ * Baggage key
+ */
+var BAGGAGE_KEY = context_1.createContextKey('OpenTelemetry Baggage Key');
+/**
+ * Retrieve the current baggage from the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @returns {Baggage} Extracted baggage from the context
+ */
+function getBaggage(context) {
+    return context.getValue(BAGGAGE_KEY) || undefined;
+}
+exports.getBaggage = getBaggage;
+/**
+ * Store a baggage in the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @param {Baggage} baggage that will be set in the actual context
+ */
+function setBaggage(context, baggage) {
+    return context.setValue(BAGGAGE_KEY, baggage);
+}
+exports.setBaggage = setBaggage;
+/**
+ * Delete the baggage stored in the given context
+ *
+ * @param {Context} Context that manage all context values
+ */
+function deleteBaggage(context) {
+    return context.deleteValue(BAGGAGE_KEY);
+}
+exports.deleteBaggage = deleteBaggage;
+//# sourceMappingURL=context-helpers.js.map
+
+/***/ }),
 /* 484 */,
 /* 485 */,
 /* 486 */,
@@ -39464,11 +39025,18 @@ exports.getState = getState;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ContextAPI = void 0;
-var context_base_1 = __webpack_require__(231);
-var global_utils_1 = __webpack_require__(976);
-var NOOP_CONTEXT_MANAGER = new context_base_1.NoopContextManager();
+var NoopContextManager_1 = __webpack_require__(425);
+var global_utils_1 = __webpack_require__(525);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'context';
+var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Context API
  */
@@ -39484,15 +39052,12 @@ var ContextAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current context manager. Returns the initialized context manager
+     * Set the current context manager.
+     *
+     * @returns true if the context manager was successfully registered, else false
      */
     ContextAPI.prototype.setGlobalContextManager = function (contextManager) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY]) {
-            // global context manager has already been set
-            return this._getContextManager();
-        }
-        global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, contextManager, NOOP_CONTEXT_MANAGER);
-        return contextManager;
+        return global_utils_1.registerGlobal(API_NAME, contextManager, diag_1.DiagAPI.instance());
     };
     /**
      * Get the currently active context
@@ -39505,28 +39070,33 @@ var ContextAPI = /** @class */ (function () {
      *
      * @param context context to be active during function execution
      * @param fn function to execute in a context
+     * @param thisArg optional receiver to be used for calling fn
+     * @param args optional arguments forwarded to fn
      */
-    ContextAPI.prototype.with = function (context, fn) {
-        return this._getContextManager().with(context, fn);
+    ContextAPI.prototype.with = function (context, fn, thisArg) {
+        var _a;
+        var args = [];
+        for (var _i = 3; _i < arguments.length; _i++) {
+            args[_i - 3] = arguments[_i];
+        }
+        return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], args));
     };
     /**
      * Bind a context to a target function or event emitter
      *
-     * @param target function or event emitter to bind
      * @param context context to bind to the event emitter or function. Defaults to the currently active context
+     * @param target function or event emitter to bind
      */
-    ContextAPI.prototype.bind = function (target, context) {
-        if (context === void 0) { context = this.active(); }
-        return this._getContextManager().bind(target, context);
+    ContextAPI.prototype.bind = function (context, target) {
+        return this._getContextManager().bind(context, target);
     };
     ContextAPI.prototype._getContextManager = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NOOP_CONTEXT_MANAGER);
+        return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;
     };
     /** Disable and remove the global context manager */
     ContextAPI.prototype.disable = function () {
         this._getContextManager().disable();
-        delete global_utils_1._global[global_utils_1.GLOBAL_CONTEXT_MANAGER_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     return ContextAPI;
 }());
@@ -39587,10 +39157,79 @@ function defer(fn)
 
 "use strict";
 
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-Object.defineProperty(exports, "__esModule", { value: true });
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
 __webpack_require__(71);
+var tslib = __webpack_require__(671);
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * returns an async iterator that iterates over results. It also has a `byPage`
+ * method that returns pages of items at once.
+ *
+ * @param pagedResult - an object that specifies how to get pages.
+ * @returns a paged async iterator that iterates over results.
+ */
+function getPagedAsyncIterator(pagedResult) {
+    var _a;
+    const iter = getItemAsyncIterator(pagedResult);
+    return {
+        next() {
+            return iter.next();
+        },
+        [Symbol.asyncIterator]() {
+            return this;
+        },
+        byPage: (_a = pagedResult === null || pagedResult === void 0 ? void 0 : pagedResult.byPage) !== null && _a !== void 0 ? _a : ((settings) => {
+            return getPageAsyncIterator(pagedResult, settings === null || settings === void 0 ? void 0 : settings.maxPageSize);
+        })
+    };
+}
+function getItemAsyncIterator(pagedResult, maxPageSize) {
+    return tslib.__asyncGenerator(this, arguments, function* getItemAsyncIterator_1() {
+        var e_1, _a;
+        const pages = getPageAsyncIterator(pagedResult, maxPageSize);
+        const firstVal = yield tslib.__await(pages.next());
+        // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is
+        if (!Array.isArray(firstVal.value)) {
+            yield yield tslib.__await(firstVal.value);
+            // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case
+            yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(pages)));
+        }
+        else {
+            yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(firstVal.value)));
+            try {
+                for (var pages_1 = tslib.__asyncValues(pages), pages_1_1; pages_1_1 = yield tslib.__await(pages_1.next()), !pages_1_1.done;) {
+                    const page = pages_1_1.value;
+                    // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,
+                    // it must be the case that `TPage = TElement[]`
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));
+                }
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (pages_1_1 && !pages_1_1.done && (_a = pages_1.return)) yield tslib.__await(_a.call(pages_1));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
+        }
+    });
+}
+function getPageAsyncIterator(pagedResult, maxPageSize) {
+    return tslib.__asyncGenerator(this, arguments, function* getPageAsyncIterator_1() {
+        let response = yield tslib.__await(pagedResult.getPage(pagedResult.firstPageLink, maxPageSize));
+        yield yield tslib.__await(response.page);
+        while (response.nextPageLink) {
+            response = yield tslib.__await(pagedResult.getPage(response.nextPageLink, maxPageSize));
+            yield yield tslib.__await(response.page);
+        }
+    });
+}
+
+exports.getPagedAsyncIterator = getPagedAsyncIterator;
+//# sourceMappingURL=index.js.map
 
 
 /***/ }),
@@ -39598,7 +39237,7 @@ __webpack_require__(71);
 /* 512 */
 /***/ (function(module) {
 
-module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/mrb-publish+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["keynote"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana"},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}};
+module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}};
 
 /***/ }),
 /* 513 */,
@@ -39719,7 +39358,77 @@ module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"appl
 
 
 /***/ }),
-/* 525 */,
+/* 525 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;
+var platform_1 = __webpack_require__(910);
+var version_1 = __webpack_require__(830);
+var semver_1 = __webpack_require__(987);
+var major = version_1.VERSION.split('.')[0];
+var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("opentelemetry.js.api." + major);
+var _global = platform_1._globalThis;
+function registerGlobal(type, instance, diag, allowOverride) {
+    var _a;
+    if (allowOverride === void 0) { allowOverride = false; }
+    var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
+        version: version_1.VERSION,
+    });
+    if (!allowOverride && api[type]) {
+        // already registered an API of this type
+        var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type);
+        diag.error(err.stack || err.message);
+        return false;
+    }
+    if (api.version !== version_1.VERSION) {
+        // All registered APIs must be of the same version exactly
+        var err = new Error('@opentelemetry/api: All API registration versions must match');
+        diag.error(err.stack || err.message);
+        return false;
+    }
+    api[type] = instance;
+    diag.debug("@opentelemetry/api: Registered a global for " + type + " v" + version_1.VERSION + ".");
+    return true;
+}
+exports.registerGlobal = registerGlobal;
+function getGlobal(type) {
+    var _a, _b;
+    var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;
+    if (!globalVersion || !semver_1.isCompatible(globalVersion)) {
+        return;
+    }
+    return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];
+}
+exports.getGlobal = getGlobal;
+function unregisterGlobal(type, diag) {
+    diag.debug("@opentelemetry/api: Unregistering a global for " + type + " v" + version_1.VERSION + ".");
+    var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
+    if (api) {
+        delete api[type];
+    }
+}
+exports.unregisterGlobal = unregisterGlobal;
+//# sourceMappingURL=global-utils.js.map
+
+/***/ }),
 /* 526 */,
 /* 527 */,
 /* 528 */,
@@ -40233,7 +39942,9 @@ class HttpClient {
                 maxSockets: maxSockets,
                 keepAlive: this._keepAlive,
                 proxy: {
-                    proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`,
+                    ...((proxyUrl.username || proxyUrl.password) && {
+                        proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
+                    }),
                     host: proxyUrl.hostname,
                     port: proxyUrl.port
                 }
@@ -40362,7 +40073,56 @@ exports.HttpClient = HttpClient;
 /* 542 */,
 /* 543 */,
 /* 544 */,
-/* 545 */,
+/* 545 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagLogLevel = void 0;
+/**
+ * Defines the available internal logging levels for the diagnostic logger, the numeric values
+ * of the levels are defined to match the original values from the initial LogLevel to avoid
+ * compatibility/migration issues for any implementation that assume the numeric ordering.
+ */
+var DiagLogLevel;
+(function (DiagLogLevel) {
+    /** Diagnostic Logging level setting to disable all logging (except and forced logs) */
+    DiagLogLevel[DiagLogLevel["NONE"] = 0] = "NONE";
+    /** Identifies an error scenario */
+    DiagLogLevel[DiagLogLevel["ERROR"] = 30] = "ERROR";
+    /** Identifies a warning scenario */
+    DiagLogLevel[DiagLogLevel["WARN"] = 50] = "WARN";
+    /** General informational log message */
+    DiagLogLevel[DiagLogLevel["INFO"] = 60] = "INFO";
+    /** General debug log message */
+    DiagLogLevel[DiagLogLevel["DEBUG"] = 70] = "DEBUG";
+    /**
+     * Detailed trace level logging should only be used for development, should only be set
+     * in a development environment.
+     */
+    DiagLogLevel[DiagLogLevel["VERBOSE"] = 80] = "VERBOSE";
+    /** Used to set the logging level to include all logging */
+    DiagLogLevel[DiagLogLevel["ALL"] = 9999] = "ALL";
+})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));
+//# sourceMappingURL=types.js.map
+
+/***/ }),
 /* 546 */,
 /* 547 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
@@ -40581,30 +40341,7 @@ CombinedStream.prototype._emitError = function(err) {
 /* 548 */,
 /* 549 */,
 /* 550 */,
-/* 551 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=BoundInstrument.js.map
-
-/***/ }),
+/* 551 */,
 /* 552 */,
 /* 553 */,
 /* 554 */,
@@ -40894,7 +40631,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
 
 /***/ }),
 /* 560 */,
-/* 561 */,
+/* 561 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.baggageEntryMetadataSymbol = void 0;
+/**
+ * Symbol used to make BaggageEntryMetadata an opaque type
+ */
+exports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');
+//# sourceMappingURL=symbol.js.map
+
+/***/ }),
 /* 562 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
@@ -41208,8 +40973,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const pathHelper = __webpack_require__(972);
+exports.partialMatch = exports.match = exports.getSearchPaths = void 0;
+const pathHelper = __importStar(__webpack_require__(972));
 const internal_match_kind_1 = __webpack_require__(327);
 const IS_WINDOWS = process.platform === 'win32';
 /**
@@ -41291,8 +41076,28 @@ exports.partialMatch = partialMatch;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const core = __webpack_require__(470);
+exports.getOptions = void 0;
+const core = __importStar(__webpack_require__(470));
 /**
  * Returns a copy with defaults filled in.
  */
@@ -41643,7 +41448,318 @@ Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=span_context.js.map
 
 /***/ }),
-/* 608 */,
+/* 608 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 609 */,
 /* 610 */,
 /* 611 */,
@@ -41723,6 +41839,9 @@ function range(a, b, str) {
   var i = ai;
 
   if (ai >= 0 && bi > 0) {
+    if(a===b) {
+      return [ai, bi];
+    }
     begs = [];
     left = str.length;
 
@@ -41763,11 +41882,17 @@ module.exports = require("path");
 /***/ }),
 /* 623 */,
 /* 624 */,
-/* 625 */
-/***/ (function(__unusedmodule, exports) {
+/* 625 */,
+/* 626 */,
+/* 627 */,
+/* 628 */,
+/* 629 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;
 /*
  * Copyright The OpenTelemetry Authors
  *
@@ -41783,196 +41908,39 @@ module.exports = require("path");
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __extends = (this && this.__extends) || (function () {
-    var extendStatics = function (d, b) {
-        extendStatics = Object.setPrototypeOf ||
-            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-        return extendStatics(d, b);
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-})();
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_BATCH_OBSERVER_METRIC = exports.NOOP_SUM_OBSERVER_METRIC = exports.NOOP_UP_DOWN_SUM_OBSERVER_METRIC = exports.NOOP_VALUE_OBSERVER_METRIC = exports.NOOP_BOUND_BASE_OBSERVER = exports.NOOP_VALUE_RECORDER_METRIC = exports.NOOP_BOUND_VALUE_RECORDER = exports.NOOP_COUNTER_METRIC = exports.NOOP_BOUND_COUNTER = exports.NOOP_METER = exports.NoopBoundBaseObserver = exports.NoopBoundValueRecorder = exports.NoopBoundCounter = exports.NoopBatchObserverMetric = exports.NoopBaseObserverMetric = exports.NoopValueRecorderMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;
+var invalid_span_constants_1 = __webpack_require__(435);
+var NonRecordingSpan_1 = __webpack_require__(437);
+var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;
+var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;
+function isValidTraceId(traceId) {
+    return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;
+}
+exports.isValidTraceId = isValidTraceId;
+function isValidSpanId(spanId) {
+    return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;
+}
+exports.isValidSpanId = isValidSpanId;
 /**
- * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses
- * constant NoopMetrics for all of its methods.
+ * Returns true if this {@link SpanContext} is valid.
+ * @return true if this {@link SpanContext} is valid.
  */
-var NoopMeter = /** @class */ (function () {
-    function NoopMeter() {
-    }
-    /**
-     * Returns constant noop value recorder.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createValueRecorder = function (name, options) {
-        return exports.NOOP_VALUE_RECORDER_METRIC;
-    };
-    /**
-     * Returns a constant noop counter.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createCounter = function (name, options) {
-        return exports.NOOP_COUNTER_METRIC;
-    };
-    /**
-     * Returns a constant noop UpDownCounter.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     */
-    NoopMeter.prototype.createUpDownCounter = function (name, options) {
-        return exports.NOOP_COUNTER_METRIC;
-    };
-    /**
-     * Returns constant noop value observer.
-     * @param name the name of the metric.
-     * @param [options] the metric options.
-     * @param [callback] the value observer callback
-     */
-    NoopMeter.prototype.createValueObserver = function (name, options, callback) {
-        return exports.NOOP_VALUE_OBSERVER_METRIC;
-    };
-    /**
-     * Returns constant noop batch observer.
-     * @param name the name of the metric.
-     * @param callback the batch observer callback
-     */
-    NoopMeter.prototype.createBatchObserver = function (name, callback) {
-        return exports.NOOP_BATCH_OBSERVER_METRIC;
-    };
-    return NoopMeter;
-}());
-exports.NoopMeter = NoopMeter;
-var NoopMetric = /** @class */ (function () {
-    function NoopMetric(instrument) {
-        this._instrument = instrument;
-    }
-    /**
-     * Returns a Bound Instrument associated with specified Labels.
-     * It is recommended to keep a reference to the Bound Instrument instead of
-     * always calling this method for every operations.
-     * @param labels key-values pairs that are associated with a specific metric
-     *     that you want to record.
-     */
-    NoopMetric.prototype.bind = function (labels) {
-        return this._instrument;
-    };
-    /**
-     * Removes the Binding from the metric, if it is present.
-     * @param labels key-values pairs that are associated with a specific metric.
-     */
-    NoopMetric.prototype.unbind = function (labels) {
-        return;
-    };
-    /**
-     * Clears all timeseries from the Metric.
-     */
-    NoopMetric.prototype.clear = function () {
-        return;
-    };
-    return NoopMetric;
-}());
-exports.NoopMetric = NoopMetric;
-var NoopCounterMetric = /** @class */ (function (_super) {
-    __extends(NoopCounterMetric, _super);
-    function NoopCounterMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopCounterMetric.prototype.add = function (value, labels) {
-        this.bind(labels).add(value);
-    };
-    return NoopCounterMetric;
-}(NoopMetric));
-exports.NoopCounterMetric = NoopCounterMetric;
-var NoopValueRecorderMetric = /** @class */ (function (_super) {
-    __extends(NoopValueRecorderMetric, _super);
-    function NoopValueRecorderMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopValueRecorderMetric.prototype.record = function (value, labels, correlationContext, spanContext) {
-        if (typeof correlationContext === 'undefined') {
-            this.bind(labels).record(value);
-        }
-        else if (typeof spanContext === 'undefined') {
-            this.bind(labels).record(value, correlationContext);
-        }
-        else {
-            this.bind(labels).record(value, correlationContext, spanContext);
-        }
-    };
-    return NoopValueRecorderMetric;
-}(NoopMetric));
-exports.NoopValueRecorderMetric = NoopValueRecorderMetric;
-var NoopBaseObserverMetric = /** @class */ (function (_super) {
-    __extends(NoopBaseObserverMetric, _super);
-    function NoopBaseObserverMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    NoopBaseObserverMetric.prototype.observation = function () {
-        return {
-            observer: this,
-            value: 0,
-        };
-    };
-    return NoopBaseObserverMetric;
-}(NoopMetric));
-exports.NoopBaseObserverMetric = NoopBaseObserverMetric;
-var NoopBatchObserverMetric = /** @class */ (function (_super) {
-    __extends(NoopBatchObserverMetric, _super);
-    function NoopBatchObserverMetric() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
-    return NoopBatchObserverMetric;
-}(NoopMetric));
-exports.NoopBatchObserverMetric = NoopBatchObserverMetric;
-var NoopBoundCounter = /** @class */ (function () {
-    function NoopBoundCounter() {
-    }
-    NoopBoundCounter.prototype.add = function (value) {
-        return;
-    };
-    return NoopBoundCounter;
-}());
-exports.NoopBoundCounter = NoopBoundCounter;
-var NoopBoundValueRecorder = /** @class */ (function () {
-    function NoopBoundValueRecorder() {
-    }
-    NoopBoundValueRecorder.prototype.record = function (value, correlationContext, spanContext) {
-        return;
-    };
-    return NoopBoundValueRecorder;
-}());
-exports.NoopBoundValueRecorder = NoopBoundValueRecorder;
-var NoopBoundBaseObserver = /** @class */ (function () {
-    function NoopBoundBaseObserver() {
-    }
-    NoopBoundBaseObserver.prototype.update = function (value) { };
-    return NoopBoundBaseObserver;
-}());
-exports.NoopBoundBaseObserver = NoopBoundBaseObserver;
-exports.NOOP_METER = new NoopMeter();
-exports.NOOP_BOUND_COUNTER = new NoopBoundCounter();
-exports.NOOP_COUNTER_METRIC = new NoopCounterMetric(exports.NOOP_BOUND_COUNTER);
-exports.NOOP_BOUND_VALUE_RECORDER = new NoopBoundValueRecorder();
-exports.NOOP_VALUE_RECORDER_METRIC = new NoopValueRecorderMetric(exports.NOOP_BOUND_VALUE_RECORDER);
-exports.NOOP_BOUND_BASE_OBSERVER = new NoopBoundBaseObserver();
-exports.NOOP_VALUE_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_UP_DOWN_SUM_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_SUM_OBSERVER_METRIC = new NoopBaseObserverMetric(exports.NOOP_BOUND_BASE_OBSERVER);
-exports.NOOP_BATCH_OBSERVER_METRIC = new NoopBatchObserverMetric();
-//# sourceMappingURL=NoopMeter.js.map
+function isSpanContextValid(spanContext) {
+    return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));
+}
+exports.isSpanContextValid = isSpanContextValid;
+/**
+ * Wrap the given {@link SpanContext} in a new non-recording {@link Span}
+ *
+ * @param spanContext span context to be wrapped
+ * @returns a new non-recording {@link Span} with the provided context
+ */
+function wrapSpanContext(spanContext) {
+    return new NonRecordingSpan_1.NonRecordingSpan(spanContext);
+}
+exports.wrapSpanContext = wrapSpanContext;
+//# sourceMappingURL=spancontext-utils.js.map
 
 /***/ }),
-/* 626 */,
-/* 627 */,
-/* 628 */,
-/* 629 */,
 /* 630 */,
 /* 631 */
 /***/ (function(module) {
@@ -42072,7 +42040,318 @@ module.exports = require("net");
 
 
 /***/ }),
-/* 640 */,
+/* 640 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 641 */,
 /* 642 */,
 /* 643 */,
@@ -43651,7 +43930,33 @@ module.exports = require("net");
 /* 646 */,
 /* 647 */,
 /* 648 */,
-/* 649 */,
+/* 649 */
+/***/ (function(module) {
+
+"use strict";
+
+
+module.exports.mixin = function mixin(target, source) {
+  const keys = Object.getOwnPropertyNames(source);
+  for (let i = 0; i < keys.length; ++i) {
+    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
+  }
+};
+
+module.exports.wrapperSymbol = Symbol("wrapper");
+module.exports.implSymbol = Symbol("impl");
+
+module.exports.wrapperForImpl = function (impl) {
+  return impl[module.exports.wrapperSymbol];
+};
+
+module.exports.implForWrapper = function (wrapper) {
+  return wrapper[module.exports.implSymbol];
+};
+
+
+
+/***/ }),
 /* 650 */,
 /* 651 */,
 /* 652 */,
@@ -43702,30 +44007,7 @@ module.exports = require("net");
 
 /***/ }),
 /* 658 */,
-/* 659 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Meter.js.map
-
-/***/ }),
+/* 659 */,
 /* 660 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -43874,7 +44156,76 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 663 */,
 /* 664 */,
 /* 665 */,
-/* 666 */,
+/* 666 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BaggageImpl = void 0;
+var BaggageImpl = /** @class */ (function () {
+    function BaggageImpl(entries) {
+        this._entries = entries ? new Map(entries) : new Map();
+    }
+    BaggageImpl.prototype.getEntry = function (key) {
+        var entry = this._entries.get(key);
+        if (!entry) {
+            return undefined;
+        }
+        return Object.assign({}, entry);
+    };
+    BaggageImpl.prototype.getAllEntries = function () {
+        return Array.from(this._entries.entries()).map(function (_a) {
+            var k = _a[0], v = _a[1];
+            return [k, v];
+        });
+    };
+    BaggageImpl.prototype.setEntry = function (key, entry) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.set(key, entry);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntry = function (key) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.delete(key);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntries = function () {
+        var keys = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            keys[_i] = arguments[_i];
+        }
+        var newBaggage = new BaggageImpl(this._entries);
+        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
+            var key = keys_1[_a];
+            newBaggage._entries.delete(key);
+        }
+        return newBaggage;
+    };
+    BaggageImpl.prototype.clear = function () {
+        return new BaggageImpl();
+    };
+    return BaggageImpl;
+}());
+exports.BaggageImpl = BaggageImpl;
+//# sourceMappingURL=baggage-impl.js.map
+
+/***/ }),
 /* 667 */,
 /* 668 */,
 /* 669 */
@@ -43935,12 +44286,342 @@ var SpanKind;
 //# sourceMappingURL=span_kind.js.map
 
 /***/ }),
-/* 671 */,
+/* 671 */
+/***/ (function(module) {
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
+
+
+/***/ }),
 /* 672 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -43952,9 +44633,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 };
 var _a;
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert_1 = __webpack_require__(357);
-const fs = __webpack_require__(747);
-const path = __webpack_require__(622);
+exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
+const fs = __importStar(__webpack_require__(747));
+const path = __importStar(__webpack_require__(622));
 _a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
 exports.IS_WINDOWS = process.platform === 'win32';
 function exists(fsPath) {
@@ -43995,49 +44676,6 @@ function isRooted(p) {
     return p.startsWith('/');
 }
 exports.isRooted = isRooted;
-/**
- * Recursively create a directory at `fsPath`.
- *
- * This implementation is optimistic, meaning it attempts to create the full
- * path first, and backs up the path stack from there.
- *
- * @param fsPath The path to create
- * @param maxDepth The maximum recursion depth
- * @param depth The current recursion depth
- */
-function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
-    return __awaiter(this, void 0, void 0, function* () {
-        assert_1.ok(fsPath, 'a path argument must be provided');
-        fsPath = path.resolve(fsPath);
-        if (depth >= maxDepth)
-            return exports.mkdir(fsPath);
-        try {
-            yield exports.mkdir(fsPath);
-            return;
-        }
-        catch (err) {
-            switch (err.code) {
-                case 'ENOENT': {
-                    yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
-                    yield exports.mkdir(fsPath);
-                    return;
-                }
-                default: {
-                    let stats;
-                    try {
-                        stats = yield exports.stat(fsPath);
-                    }
-                    catch (err2) {
-                        throw err;
-                    }
-                    if (!stats.isDirectory())
-                        throw err;
-                }
-            }
-        }
-    });
-}
-exports.mkdirP = mkdirP;
 /**
  * Best effort attempt to determine whether a file exists and is executable.
  * @param filePath    file path to check
@@ -44134,10 +44772,66 @@ function isUnixExecutable(stats) {
         ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
         ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
 }
+// Get the path of cmd.exe in windows
+function getCmdPath() {
+    var _a;
+    return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;
+}
+exports.getCmdPath = getCmdPath;
 //# sourceMappingURL=io-util.js.map
 
 /***/ }),
-/* 673 */,
+/* 673 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createLogLevelDiagLogger = void 0;
+var types_1 = __webpack_require__(545);
+function createLogLevelDiagLogger(maxLevel, logger) {
+    if (maxLevel < types_1.DiagLogLevel.NONE) {
+        maxLevel = types_1.DiagLogLevel.NONE;
+    }
+    else if (maxLevel > types_1.DiagLogLevel.ALL) {
+        maxLevel = types_1.DiagLogLevel.ALL;
+    }
+    // In case the logger is null or undefined
+    logger = logger || {};
+    function _filterFunc(funcName, theLevel) {
+        var theFunc = logger[funcName];
+        if (typeof theFunc === 'function' && maxLevel >= theLevel) {
+            return theFunc.bind(logger);
+        }
+        return function () { };
+    }
+    return {
+        error: _filterFunc('error', types_1.DiagLogLevel.ERROR),
+        warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),
+        info: _filterFunc('info', types_1.DiagLogLevel.INFO),
+        debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),
+        verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),
+    };
+}
+exports.createLogLevelDiagLogger = createLogLevelDiagLogger;
+//# sourceMappingURL=logLevelLogger.js.map
+
+/***/ }),
 /* 674 */,
 /* 675 */,
 /* 676 */
@@ -44187,7 +44881,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
 var __importStar = (this && this.__importStar) || function (mod) {
     if (mod && mod.__esModule) return mod;
     var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
     __setModuleDefault(result, mod);
     return result;
 };
@@ -44388,9 +45082,13 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
         try {
             // Download the cache from the cache entry
             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options);
-            const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
+            if (core.isDebug()) {
+                yield tar_1.listTar(archivePath, compressionMethod);
+            }
+            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`);
             yield tar_1.extractTar(archivePath, compressionMethod);
+            core.info('Cache restored successfully');
         }
         finally {
             // Try to delete the archive to save space
@@ -44432,15 +45130,29 @@ function saveCache(paths, key, options) {
         const archiveFolder = yield utils.createTempDirectory();
         const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
         core.debug(`Archive Path: ${archivePath}`);
-        yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod);
-        const fileSizeLimit = 5 * 1024 * 1024 * 1024; // 5GB per repo limit
-        const archiveFileSize = utils.getArchiveFileSizeIsBytes(archivePath);
-        core.debug(`File Size: ${archiveFileSize}`);
-        if (archiveFileSize > fileSizeLimit) {
-            throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 5GB limit, not saving cache.`);
+        try {
+            yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod);
+            if (core.isDebug()) {
+                yield tar_1.listTar(archivePath, compressionMethod);
+            }
+            const fileSizeLimit = 10 * 1024 * 1024 * 1024; // 10GB per repo limit
+            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
+            core.debug(`File Size: ${archiveFileSize}`);
+            if (archiveFileSize > fileSizeLimit) {
+                throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`);
+            }
+            core.debug(`Saving Cache (ID: ${cacheId})`);
+            yield cacheHttpClient.saveCache(cacheId, archivePath, options);
+        }
+        finally {
+            // Try to delete the archive to save space
+            try {
+                yield utils.unlinkFile(archivePath);
+            }
+            catch (error) {
+                core.debug(`Failed to delete archive: ${error}`);
+            }
         }
-        core.debug(`Saving Cache (ID: ${cacheId})`);
-        yield cacheHttpClient.saveCache(cacheId, archivePath, options);
         return cacheId;
     });
 }
@@ -44503,30 +45215,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 699 */,
 /* 700 */,
 /* 701 */,
-/* 702 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=MeterProvider.js.map
-
-/***/ }),
+/* 702 */,
 /* 703 */,
 /* 704 */,
 /* 705 */,
@@ -44613,13 +45302,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 712 */,
 /* 713 */,
 /* 714 */,
-/* 715 */
-/***/ (function(__unusedmodule, exports) {
+/* 715 */,
+/* 716 */,
+/* 717 */,
+/* 718 */,
+/* 719 */,
+/* 720 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Context = void 0;
 /*
  * Copyright The OpenTelemetry Authors
  *
@@ -44635,70 +45327,66 @@ exports.Context = void 0;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var Context = /** @class */ (function () {
-    /**
-     * Construct a new context which inherits values from an optional parent context.
-     *
-     * @param parentContext a context from which to inherit values
-     */
-    function Context(parentContext) {
-        this._currentContext = parentContext ? new Map(parentContext) : new Map();
-    }
-    /** Get a key to uniquely identify a context value */
-    Context.createKey = function (description) {
-        return Symbol(description);
-    };
-    /**
-     * Get a value from the context.
-     *
-     * @param key key which identifies a context value
-     */
-    Context.prototype.getValue = function (key) {
-        return this._currentContext.get(key);
-    };
-    /**
-     * Create a new context which inherits from this context and has
-     * the given key set to the given value.
-     *
-     * @param key context key for which to set the value
-     * @param value value to set for the given key
-     */
-    Context.prototype.setValue = function (key, value) {
-        var context = new Context(this._currentContext);
-        context._currentContext.set(key, value);
-        return context;
-    };
-    /**
-     * Return a new context which inherits from this context but does
-     * not contain a value for the given key.
-     *
-     * @param key context key for which to clear a value
-     */
-    Context.prototype.deleteValue = function (key) {
-        var context = new Context(this._currentContext);
-        context._currentContext.delete(key);
-        return context;
-    };
-    /** The root context is used as the default parent context when there is no active context */
-    Context.ROOT_CONTEXT = new Context();
-    /**
-     * This is another identifier to the root context which allows developers to easily search the
-     * codebase for direct uses of context which need to be removed in later PRs.
-     *
-     * It's existence is temporary and it should be removed when all references are fixed.
-     */
-    Context.TODO = Context.ROOT_CONTEXT;
-    return Context;
-}());
-exports.Context = Context;
-//# sourceMappingURL=context.js.map
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getSpan = void 0;
+var context_1 = __webpack_require__(132);
+var NonRecordingSpan_1 = __webpack_require__(437);
+/**
+ * span key
+ */
+var SPAN_KEY = context_1.createContextKey('OpenTelemetry Context Key SPAN');
+/**
+ * Return the span if one exists
+ *
+ * @param context context to get span from
+ */
+function getSpan(context) {
+    return context.getValue(SPAN_KEY) || undefined;
+}
+exports.getSpan = getSpan;
+/**
+ * Set the span on a context
+ *
+ * @param context context to use as parent
+ * @param span span to set active
+ */
+function setSpan(context, span) {
+    return context.setValue(SPAN_KEY, span);
+}
+exports.setSpan = setSpan;
+/**
+ * Remove current span stored in the context
+ *
+ * @param context context to delete span from
+ */
+function deleteSpan(context) {
+    return context.deleteValue(SPAN_KEY);
+}
+exports.deleteSpan = deleteSpan;
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context context to set active span on
+ * @param spanContext span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));
+}
+exports.setSpanContext = setSpanContext;
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context context to get values from
+ */
+function getSpanContext(context) {
+    var _a;
+    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();
+}
+exports.getSpanContext = getSpanContext;
+//# sourceMappingURL=context-utils.js.map
 
 /***/ }),
-/* 716 */,
-/* 717 */,
-/* 718 */,
-/* 719 */,
-/* 720 */,
 /* 721 */,
 /* 722 */
 /***/ (function(module) {
@@ -44757,36 +45445,14 @@ module.exports = bytesToUuid;
 /***/ }),
 /* 725 */,
 /* 726 */,
-/* 727 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Event.js.map
-
-/***/ }),
+/* 727 */,
 /* 728 */
 /***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.SearchState = void 0;
 class SearchState {
     constructor(path, level) {
         this.path = path;
@@ -45078,49 +45744,91 @@ function rng() {
 /* 739 */,
 /* 740 */,
 /* 741 */,
-/* 742 */,
-/* 743 */,
-/* 744 */
-/***/ (function(__unusedmodule, exports) {
+/* 742 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+var __awaiter = (this && this.__awaiter) || function (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());
+    });
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_HTTP_TEXT_PROPAGATOR = exports.NoopHttpTextPropagator = void 0;
-/**
- * No-op implementations of {@link HttpTextPropagator}.
- */
-var NoopHttpTextPropagator = /** @class */ (function () {
-    function NoopHttpTextPropagator() {
+exports.OidcClient = void 0;
+const http_client_1 = __webpack_require__(539);
+const auth_1 = __webpack_require__(226);
+const core_1 = __webpack_require__(470);
+class OidcClient {
+    static createHttpClient(allowRetry = true, maxRetry = 10) {
+        const requestOptions = {
+            allowRetries: allowRetry,
+            maxRetries: maxRetry
+        };
+        return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
     }
-    /** Noop inject function does nothing */
-    NoopHttpTextPropagator.prototype.inject = function (context, carrier, setter) { };
-    /** Noop extract function does nothing and returns the input context */
-    NoopHttpTextPropagator.prototype.extract = function (context, carrier, getter) {
-        return context;
-    };
-    return NoopHttpTextPropagator;
-}());
-exports.NoopHttpTextPropagator = NoopHttpTextPropagator;
-exports.NOOP_HTTP_TEXT_PROPAGATOR = new NoopHttpTextPropagator();
-//# sourceMappingURL=NoopHttpTextPropagator.js.map
+    static getRequestToken() {
+        const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
+        if (!token) {
+            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
+        }
+        return token;
+    }
+    static getIDTokenUrl() {
+        const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
+        if (!runtimeUrl) {
+            throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
+        }
+        return runtimeUrl;
+    }
+    static getCall(id_token_url) {
+        var _a;
+        return __awaiter(this, void 0, void 0, function* () {
+            const httpclient = OidcClient.createHttpClient();
+            const res = yield httpclient
+                .getJson(id_token_url)
+                .catch(error => {
+                throw new Error(`Failed to get ID Token. \n 
+        Error Code : ${error.statusCode}\n 
+        Error Message: ${error.result.message}`);
+            });
+            const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
+            if (!id_token) {
+                throw new Error('Response json body do not have ID Token field');
+            }
+            return id_token;
+        });
+    }
+    static getIDToken(audience) {
+        return __awaiter(this, void 0, void 0, function* () {
+            try {
+                // New ID Token is requested from action service
+                let id_token_url = OidcClient.getIDTokenUrl();
+                if (audience) {
+                    const encodedAudience = encodeURIComponent(audience);
+                    id_token_url = `${id_token_url}&audience=${encodedAudience}`;
+                }
+                core_1.debug(`ID token url is ${id_token_url}`);
+                const id_token = yield OidcClient.getCall(id_token_url);
+                core_1.setSecret(id_token);
+                return id_token;
+            }
+            catch (error) {
+                throw new Error(`Error message: ${error.message}`);
+            }
+        });
+    }
+}
+exports.OidcClient = OidcClient;
+//# sourceMappingURL=oidc-utils.js.map
 
 /***/ }),
+/* 743 */,
+/* 744 */,
 /* 745 */,
 /* 746 */,
 /* 747 */
@@ -45139,7 +45847,7 @@ module.exports = require("fs");
 
 
 
-var Punycode = __webpack_require__(213);
+var Punycode = __webpack_require__(815);
 
 
 var internals = {};
@@ -45448,41 +46156,7 @@ function async(callback)
 
 /***/ }),
 /* 752 */,
-/* 753 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defaultSetter = void 0;
-/**
- * Default setter which sets value via direct property access
- *
- * @param carrier
- * @param key
- */
-function defaultSetter(carrier, key, value) {
-    carrier[key] = value;
-}
-exports.defaultSetter = defaultSetter;
-//# sourceMappingURL=setter.js.map
-
-/***/ }),
+/* 753 */,
 /* 754 */,
 /* 755 */,
 /* 756 */,
@@ -45526,7 +46200,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 __exportStar(__webpack_require__(145), exports);
@@ -45550,83 +46224,7 @@ module.exports = function(dst, src) {
 
 
 /***/ }),
-/* 767 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_SPAN = exports.NoopSpan = exports.INVALID_SPAN_ID = exports.INVALID_TRACE_ID = void 0;
-var trace_flags_1 = __webpack_require__(975);
-exports.INVALID_TRACE_ID = '0';
-exports.INVALID_SPAN_ID = '0';
-var INVALID_SPAN_CONTEXT = {
-    traceId: exports.INVALID_TRACE_ID,
-    spanId: exports.INVALID_SPAN_ID,
-    traceFlags: trace_flags_1.TraceFlags.NONE,
-};
-/**
- * The NoopSpan is the default {@link Span} that is used when no Span
- * implementation is available. All operations are no-op including context
- * propagation.
- */
-var NoopSpan = /** @class */ (function () {
-    function NoopSpan(_spanContext) {
-        if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; }
-        this._spanContext = _spanContext;
-    }
-    // Returns a SpanContext.
-    NoopSpan.prototype.context = function () {
-        return this._spanContext;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttribute = function (key, value) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttributes = function (attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.addEvent = function (name, attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setStatus = function (status) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.updateName = function (name) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.end = function (endTime) { };
-    // isRecording always returns false for noopSpan.
-    NoopSpan.prototype.isRecording = function () {
-        return false;
-    };
-    return NoopSpan;
-}());
-exports.NoopSpan = NoopSpan;
-exports.NOOP_SPAN = new NoopSpan();
-//# sourceMappingURL=NoopSpan.js.map
-
-/***/ }),
+/* 767 */,
 /* 768 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -46391,7 +46989,209 @@ Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=Sampler.js.map
 
 /***/ }),
-/* 782 */,
+/* 782 */
+/***/ (function(module, __unusedexports, __webpack_require__) {
+
+"use strict";
+
+
+const conversions = __webpack_require__(149);
+const utils = __webpack_require__(649);
+const Impl = __webpack_require__(256);
+
+const impl = utils.implSymbol;
+
+function URL(url) {
+  if (!this || this[impl] || !(this instanceof URL)) {
+    throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
+  }
+  if (arguments.length < 1) {
+    throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 2; ++i) {
+    args[i] = arguments[i];
+  }
+  args[0] = conversions["USVString"](args[0]);
+  if (args[1] !== undefined) {
+  args[1] = conversions["USVString"](args[1]);
+  }
+
+  module.exports.setup(this, args);
+}
+
+URL.prototype.toJSON = function toJSON() {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  const args = [];
+  for (let i = 0; i < arguments.length && i < 0; ++i) {
+    args[i] = arguments[i];
+  }
+  return this[impl].toJSON.apply(this[impl], args);
+};
+Object.defineProperty(URL.prototype, "href", {
+  get() {
+    return this[impl].href;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].href = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+URL.prototype.toString = function () {
+  if (!this || !module.exports.is(this)) {
+    throw new TypeError("Illegal invocation");
+  }
+  return this.href;
+};
+
+Object.defineProperty(URL.prototype, "origin", {
+  get() {
+    return this[impl].origin;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "protocol", {
+  get() {
+    return this[impl].protocol;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].protocol = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "username", {
+  get() {
+    return this[impl].username;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].username = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "password", {
+  get() {
+    return this[impl].password;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].password = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "host", {
+  get() {
+    return this[impl].host;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].host = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hostname", {
+  get() {
+    return this[impl].hostname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hostname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "port", {
+  get() {
+    return this[impl].port;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].port = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "pathname", {
+  get() {
+    return this[impl].pathname;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].pathname = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "search", {
+  get() {
+    return this[impl].search;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].search = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hash", {
+  get() {
+    return this[impl].hash;
+  },
+  set(V) {
+    V = conversions["USVString"](V);
+    this[impl].hash = V;
+  },
+  enumerable: true,
+  configurable: true
+});
+
+
+module.exports = {
+  is(obj) {
+    return !!obj && obj[impl] instanceof Impl.implementation;
+  },
+  create(constructorArgs, privateData) {
+    let obj = Object.create(URL.prototype);
+    this.setup(obj, constructorArgs, privateData);
+    return obj;
+  },
+  setup(obj, constructorArgs, privateData) {
+    if (!privateData) privateData = {};
+    privateData.wrapper = obj;
+
+    obj[impl] = new Impl.implementation(constructorArgs, privateData);
+    obj[impl][utils.wrapperSymbol] = obj;
+  },
+  interface: URL,
+  expose: {
+    Window: { URL: URL },
+    Worker: { URL: URL }
+  }
+};
+
+
+
+/***/ }),
 /* 783 */,
 /* 784 */,
 /* 785 */,
@@ -46409,6 +47209,7 @@ var http = __webpack_require__(605);
 var https = __webpack_require__(211);
 var parseUrl = __webpack_require__(835).parse;
 var fs = __webpack_require__(747);
+var Stream = __webpack_require__(794).Stream;
 var mime = __webpack_require__(779);
 var asynckit = __webpack_require__(334);
 var populate = __webpack_require__(766);
@@ -46504,8 +47305,8 @@ FormData.prototype._trackLength = function(header, value, options) {
     Buffer.byteLength(header) +
     FormData.LINE_BREAK.length;
 
-  // empty or either doesn't have path or not an http response
-  if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
+  // empty or either doesn't have path or not an http response or not a stream
+  if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {
     return;
   }
 
@@ -46709,6 +47510,10 @@ FormData.prototype.getHeaders = function(userHeaders) {
   return formHeaders;
 };
 
+FormData.prototype.setBoundary = function(boundary) {
+  this._boundary = boundary;
+};
+
 FormData.prototype.getBoundary = function() {
   if (!this._boundary) {
     this._generateBoundary();
@@ -46856,13 +47661,15 @@ FormData.prototype.submit = function(params, cb) {
 
   // get content length and fire away
   this.getLength(function(err, length) {
-    if (err) {
+    if (err && err !== 'Unknown stream') {
       this._error(err);
       return;
     }
 
     // add content length
-    request.setHeader('Content-Length', length);
+    if (length) {
+      request.setHeader('Content-Length', length);
+    }
 
     this.pipe(request);
     if (cb) {
@@ -47371,299 +48178,7 @@ module.exports = require("stream");
 /* 815 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
+module.exports = require("punycode");
 
 /***/ }),
 /* 816 */,
@@ -47714,7 +48229,33 @@ module.exports = v4;
 /* 827 */,
 /* 828 */,
 /* 829 */,
-/* 830 */,
+/* 830 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.VERSION = void 0;
+// this is autogenerated file, see scripts/version-update.js
+exports.VERSION = '1.0.3';
+//# sourceMappingURL=version.js.map
+
+/***/ }),
 /* 831 */,
 /* 832 */,
 /* 833 */,
@@ -47728,42 +48269,13 @@ module.exports = require("url");
 /* 836 */,
 /* 837 */,
 /* 838 */,
-/* 839 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=TimedEvent.js.map
-
-/***/ }),
+/* 839 */,
 /* 840 */,
 /* 841 */,
 /* 842 */,
 /* 843 */,
 /* 844 */,
-/* 845 */,
-/* 846 */,
-/* 847 */,
-/* 848 */,
-/* 849 */,
-/* 850 */,
-/* 851 */
+/* 845 */
 /***/ (function(__unusedmodule, exports) {
 
 "use strict";
@@ -47784,9 +48296,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=link_context.js.map
+//# sourceMappingURL=types.js.map
 
 /***/ }),
+/* 846 */,
+/* 847 */,
+/* 848 */,
+/* 849 */,
+/* 850 */,
+/* 851 */,
 /* 852 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -47863,298 +48381,312 @@ exports.default = _default;
 /* 865 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (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());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, privateMap) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to get private field on non-instance");
-        }
-        return privateMap.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, privateMap, value) {
-        if (!privateMap.has(receiver)) {
-            throw new TypeError("attempted to set private field on non-instance");
-        }
-        privateMap.set(receiver, value);
-        return value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (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());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -48189,14 +48721,26 @@ var __createBinding;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.TraceAPI = void 0;
-var NoopTracerProvider_1 = __webpack_require__(162);
-var global_utils_1 = __webpack_require__(976);
+var global_utils_1 = __webpack_require__(525);
+var ProxyTracerProvider_1 = __webpack_require__(394);
+var spancontext_utils_1 = __webpack_require__(629);
+var context_utils_1 = __webpack_require__(720);
+var diag_1 = __webpack_require__(118);
+var API_NAME = 'trace';
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Tracing API
  */
 var TraceAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function TraceAPI() {
+        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
+        this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;
+        this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
+        this.deleteSpan = context_utils_1.deleteSpan;
+        this.getSpan = context_utils_1.getSpan;
+        this.getSpanContext = context_utils_1.getSpanContext;
+        this.setSpan = context_utils_1.setSpan;
+        this.setSpanContext = context_utils_1.setSpanContext;
     }
     /** Get the singleton instance of the Trace API */
     TraceAPI.getInstance = function () {
@@ -48206,22 +48750,22 @@ var TraceAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current global tracer. Returns the initialized global tracer provider
+     * Set the current global tracer.
+     *
+     * @returns true if the tracer provider was successfully registered, else false
      */
     TraceAPI.prototype.setGlobalTracerProvider = function (provider) {
-        if (global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY]) {
-            // global tracer provider has already been set
-            return this.getTracerProvider();
+        var success = global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());
+        if (success) {
+            this._proxyTracerProvider.setDelegate(provider);
         }
-        global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY] = global_utils_1.makeGetter(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopTracerProvider_1.NOOP_TRACER_PROVIDER);
-        return this.getTracerProvider();
+        return success;
     };
     /**
      * Returns the global tracer provider.
      */
     TraceAPI.prototype.getTracerProvider = function () {
-        var _a, _b;
-        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : NoopTracerProvider_1.NOOP_TRACER_PROVIDER);
+        return global_utils_1.getGlobal(API_NAME) || this._proxyTracerProvider;
     };
     /**
      * Returns a tracer from the global tracer provider.
@@ -48231,7 +48775,8 @@ var TraceAPI = /** @class */ (function () {
     };
     /** Remove the global tracer provider */
     TraceAPI.prototype.disable = function () {
-        delete global_utils_1._global[global_utils_1.GLOBAL_TRACE_API_KEY];
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
+        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
     };
     return TraceAPI;
 }());
@@ -48243,8 +48788,77 @@ exports.TraceAPI = TraceAPI;
 /* 877 */,
 /* 878 */,
 /* 879 */,
-/* 880 */,
-/* 881 */,
+/* 880 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map
+
+/***/ }),
+/* 881 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;
+exports.defaultTextMapGetter = {
+    get: function (carrier, key) {
+        if (carrier == null) {
+            return undefined;
+        }
+        return carrier[key];
+    },
+    keys: function (carrier) {
+        if (carrier == null) {
+            return [];
+        }
+        return Object.keys(carrier);
+    },
+};
+exports.defaultTextMapSetter = {
+    set: function (carrier, key, value) {
+        if (carrier == null) {
+            return;
+        }
+        carrier[key] = value;
+    },
+};
+//# sourceMappingURL=TextMapPropagator.js.map
+
+/***/ }),
 /* 882 */,
 /* 883 */,
 /* 884 */
@@ -48380,7 +48994,7 @@ exports.TraceAPI = TraceAPI;
 
   processors = __webpack_require__(350);
 
-  setImmediate = __webpack_require__(343).setImmediate;
+  setImmediate = __webpack_require__(213).setImmediate;
 
   defaults = __webpack_require__(791).defaults;
 
@@ -48755,48 +49369,36 @@ exports.TraceAPI = TraceAPI;
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
-/*!
- * Copyright (c) Microsoft and contributors. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- * 
- * Azure Core LRO SDK for JavaScript - 1.0.2
- */
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(422);
+var logger$1 = __webpack_require__(928);
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * When a poller is manually stopped through the `stopPolling` method,
  * the poller will be rejected with an instance of the PollerStoppedError.
  */
-var PollerStoppedError = /** @class */ (function (_super) {
-    tslib.__extends(PollerStoppedError, _super);
-    function PollerStoppedError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerStoppedError";
-        Object.setPrototypeOf(_this, PollerStoppedError.prototype);
-        return _this;
+class PollerStoppedError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerStoppedError";
+        Object.setPrototypeOf(this, PollerStoppedError.prototype);
     }
-    return PollerStoppedError;
-}(Error));
+}
 /**
  * When a poller is cancelled through the `cancelOperation` method,
  * the poller will be rejected with an instance of the PollerCancelledError.
  */
-var PollerCancelledError = /** @class */ (function (_super) {
-    tslib.__extends(PollerCancelledError, _super);
-    function PollerCancelledError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerCancelledError";
-        Object.setPrototypeOf(_this, PollerCancelledError.prototype);
-        return _this;
+class PollerCancelledError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerCancelledError";
+        Object.setPrototypeOf(this, PollerCancelledError.prototype);
     }
-    return PollerCancelledError;
-}(Error));
+}
 /**
  * A class that represents the definition of a program that polls through consecutive requests
  * until it reaches a state of completion.
@@ -48858,9 +49460,10 @@ var PollerCancelledError = /** @class */ (function (_super) {
  * ```
  *
  */
-var Poller = /** @class */ (function () {
+// eslint-disable-next-line no-use-before-define
+class Poller {
     /**
-     * A poller needs to be initialized by passing in at least the basic properties of the PollOperation<TState, TResult>.
+     * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.
      *
      * When writing an implementation of a Poller, this implementation needs to deal with the initialization
      * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's
@@ -48922,219 +49525,169 @@ var Poller = /** @class */ (function () {
      * }
      * ```
      *
-     * @param operation Must contain the basic properties of PollOperation<State, TResult>.
+     * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.
      */
-    function Poller(operation) {
-        var _this = this;
+    constructor(operation) {
         this.stopped = true;
         this.pollProgressCallbacks = [];
         this.operation = operation;
-        this.promise = new Promise(function (resolve, reject) {
-            _this.resolve = resolve;
-            _this.reject = reject;
+        this.promise = new Promise((resolve, reject) => {
+            this.resolve = resolve;
+            this.reject = reject;
         });
         // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.
         // The above warning would get thrown if `poller.poll` is called, it returns an error,
         // and pullUntilDone did not have a .catch or await try/catch on it's return value.
-        this.promise.catch(function () { });
+        this.promise.catch(() => {
+            /* intentionally blank */
+        });
     }
     /**
      * @internal
-     * @ignore
      * Starts a loop that will break only if the poller is done
      * or if the poller is stopped.
      */
-    Poller.prototype.startPolling = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (this.stopped) {
-                            this.stopped = false;
-                        }
-                        _a.label = 1;
-                    case 1:
-                        if (!(!this.isStopped() && !this.isDone())) return [3 /*break*/, 4];
-                        return [4 /*yield*/, this.poll()];
-                    case 2:
-                        _a.sent();
-                        return [4 /*yield*/, this.delay()];
-                    case 3:
-                        _a.sent();
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async startPolling() {
+        if (this.stopped) {
+            this.stopped = false;
+        }
+        while (!this.isStopped() && !this.isDone()) {
+            await this.poll();
+            await this.delay();
+        }
+    }
     /**
      * @internal
-     * @ignore
      * pollOnce does one polling, by calling to the update method of the underlying
      * poll operation to make any relevant change effective.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.pollOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var state, _a, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        state = this.operation.state;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, , 5]);
-                        if (!!this.isDone()) return [3 /*break*/, 3];
-                        _a = this;
-                        return [4 /*yield*/, this.operation.update({
-                                abortSignal: options.abortSignal,
-                                fireProgress: this.fireProgress.bind(this)
-                            })];
-                    case 2:
-                        _a.operation = _b.sent();
-                        if (this.isDone() && this.resolve) {
-                            this.resolve(state.result);
-                        }
-                        _b.label = 3;
-                    case 3: return [3 /*break*/, 5];
-                    case 4:
-                        e_1 = _b.sent();
-                        state.error = e_1;
-                        if (this.reject) {
-                            this.reject(e_1);
-                        }
-                        throw e_1;
-                    case 5: return [2 /*return*/];
+    async pollOnce(options = {}) {
+        try {
+            if (!this.isDone()) {
+                this.operation = await this.operation.update({
+                    abortSignal: options.abortSignal,
+                    fireProgress: this.fireProgress.bind(this)
+                });
+                if (this.isDone() && this.resolve) {
+                    // If the poller has finished polling, this means we now have a result.
+                    // However, it can be the case that TResult is instantiated to void, so
+                    // we are not expecting a result anyway. To assert that we might not
+                    // have a result eventually after finishing polling, we cast the result
+                    // to TResult.
+                    this.resolve(this.operation.state.result);
                 }
-            });
-        });
-    };
+            }
+        }
+        catch (e) {
+            this.operation.state.error = e;
+            if (this.reject) {
+                this.reject(e);
+            }
+            throw e;
+        }
+    }
     /**
      * @internal
-     * @ignore
      * fireProgress calls the functions passed in via onProgress the method of the poller.
      *
      * It loops over all of the callbacks received from onProgress, and executes them, sending them
      * the current operation state.
      *
-     * @param state The current operation state.
+     * @param state - The current operation state.
      */
-    Poller.prototype.fireProgress = function (state) {
-        for (var _i = 0, _a = this.pollProgressCallbacks; _i < _a.length; _i++) {
-            var callback = _a[_i];
+    fireProgress(state) {
+        for (const callback of this.pollProgressCallbacks) {
             callback(state);
         }
-    };
+    }
     /**
      * @internal
-     * @ignore
      * Invokes the underlying operation's cancel method, and rejects the
      * pollUntilDone promise.
      */
-    Poller.prototype.cancelOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this;
-                        return [4 /*yield*/, this.operation.cancel(options)];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.reject) {
-                            this.reject(new PollerCancelledError("Poller cancelled"));
-                        }
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async cancelOnce(options = {}) {
+        this.operation = await this.operation.cancel(options);
+        if (this.reject) {
+            this.reject(new PollerCancelledError("Poller cancelled"));
+        }
+    }
     /**
      * Returns a promise that will resolve once a single polling request finishes.
      * It does this by calling the update method of the Poller's operation.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.poll = function (options) {
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    poll(options = {}) {
         if (!this.pollOncePromise) {
             this.pollOncePromise = this.pollOnce(options);
-            var clearPollOncePromise = function () {
-                _this.pollOncePromise = undefined;
+            const clearPollOncePromise = () => {
+                this.pollOncePromise = undefined;
             };
-            this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise);
+            this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);
         }
         return this.pollOncePromise;
-    };
+    }
     /**
      * Returns a promise that will resolve once the underlying operation is completed.
      */
-    Poller.prototype.pollUntilDone = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                if (this.stopped) {
-                    this.startPolling().catch(this.reject);
-                }
-                return [2 /*return*/, this.promise];
-            });
-        });
-    };
+    async pollUntilDone() {
+        if (this.stopped) {
+            this.startPolling().catch(this.reject);
+        }
+        return this.promise;
+    }
     /**
      * Invokes the provided callback after each polling is completed,
      * sending the current state of the poller's operation.
      *
      * It returns a method that can be used to stop receiving updates on the given callback function.
      */
-    Poller.prototype.onProgress = function (callback) {
-        var _this = this;
+    onProgress(callback) {
         this.pollProgressCallbacks.push(callback);
-        return function () {
-            _this.pollProgressCallbacks = _this.pollProgressCallbacks.filter(function (c) { return c !== callback; });
+        return () => {
+            this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);
         };
-    };
+    }
     /**
      * Returns true if the poller has finished polling.
      */
-    Poller.prototype.isDone = function () {
-        var state = this.operation.state;
+    isDone() {
+        const state = this.operation.state;
         return Boolean(state.isCompleted || state.isCancelled || state.error);
-    };
+    }
     /**
      * Stops the poller from continuing to poll.
      */
-    Poller.prototype.stopPolling = function () {
+    stopPolling() {
         if (!this.stopped) {
             this.stopped = true;
             if (this.reject) {
                 this.reject(new PollerStoppedError("This poller is already stopped"));
             }
         }
-    };
+    }
     /**
      * Returns true if the poller is stopped.
      */
-    Poller.prototype.isStopped = function () {
+    isStopped() {
         return this.stopped;
-    };
+    }
     /**
      * Attempts to cancel the underlying operation.
      *
-     * It only optionally receives an object with an abortSignal property, from @azure/abort-controller's AbortSignalLike.
+     * It only optionally receives an object with an abortSignal property, from \@azure/abort-controller's AbortSignalLike.
      *
      * If it's called again before it finishes, it will throw an error.
      *
-     * @param options Optional properties passed to the operation's update method.
+     * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.cancelOperation = function (options) {
-        if (options === void 0) { options = {}; }
+    cancelOperation(options = {}) {
         if (!this.stopped) {
             this.stopped = true;
         }
@@ -49145,7 +49698,7 @@ var Poller = /** @class */ (function () {
             throw new Error("A cancel request is currently pending");
         }
         return this.cancelPromise;
-    };
+    }
     /**
      * Returns the state of the operation.
      *
@@ -49194,29 +49747,379 @@ var Poller = /** @class */ (function () {
      * `../test/utils/testPoller.ts`
      * and look for the getOperationState implementation.
      */
-    Poller.prototype.getOperationState = function () {
+    getOperationState() {
         return this.operation.state;
-    };
+    }
     /**
      * Returns the result value of the operation,
      * regardless of the state of the poller.
      * It can return undefined or an incomplete form of the final TResult value
      * depending on the implementation.
      */
-    Poller.prototype.getResult = function () {
-        var state = this.operation.state;
+    getResult() {
+        const state = this.operation.state;
         return state.result;
-    };
+    }
     /**
      * Returns a serialized version of the poller's operation
      * by invoking the operation's toString method.
      */
-    Poller.prototype.toString = function () {
+    toString() {
         return this.operation.toString();
-    };
-    return Poller;
-}());
+    }
+}
 
+// Copyright (c) Microsoft Corporation.
+/**
+ * The `@azure/logger` configuration for this package.
+ * @internal
+ */
+const logger = logger$1.createClientLogger("core-lro");
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Detects where the continuation token is and returns it. Notice that azure-asyncoperation
+ * must be checked first before the other location headers because there are scenarios
+ * where both azure-asyncoperation and location could be present in the same response but
+ * azure-asyncoperation should be the one to use for polling.
+ */
+function getPollingUrl(rawResponse, defaultPath) {
+    var _a, _b, _c;
+    return ((_c = (_b = (_a = getAzureAsyncOperation(rawResponse)) !== null && _a !== void 0 ? _a : getLocation(rawResponse)) !== null && _b !== void 0 ? _b : getOperationLocation(rawResponse)) !== null && _c !== void 0 ? _c : defaultPath);
+}
+function getLocation(rawResponse) {
+    return rawResponse.headers["location"];
+}
+function getOperationLocation(rawResponse) {
+    return rawResponse.headers["operation-location"];
+}
+function getAzureAsyncOperation(rawResponse) {
+    return rawResponse.headers["azure-asyncoperation"];
+}
+function inferLroMode(requestPath, requestMethod, rawResponse) {
+    if (getAzureAsyncOperation(rawResponse) !== undefined) {
+        return {
+            mode: "AzureAsync",
+            resourceLocation: requestMethod === "PUT"
+                ? requestPath
+                : requestMethod === "POST"
+                    ? getLocation(rawResponse)
+                    : undefined
+        };
+    }
+    else if (getLocation(rawResponse) !== undefined ||
+        getOperationLocation(rawResponse) !== undefined) {
+        return {
+            mode: "Location"
+        };
+    }
+    else if (["PUT", "PATCH"].includes(requestMethod)) {
+        return {
+            mode: "Body"
+        };
+    }
+    return {};
+}
+class SimpleRestError extends Error {
+    constructor(message, statusCode) {
+        super(message);
+        this.name = "RestError";
+        this.statusCode = statusCode;
+        Object.setPrototypeOf(this, SimpleRestError.prototype);
+    }
+}
+function isUnexpectedInitialResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![203, 204, 202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} in the initial response. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+function isUnexpectedPollingResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} while polling. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const successStates = ["succeeded"];
+const failureStates = ["failed", "canceled", "cancelled"];
+
+// Copyright (c) Microsoft Corporation.
+function getResponseStatus(rawResponse) {
+    var _a;
+    const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    return typeof status === "string" ? status.toLowerCase() : "succeeded";
+}
+function isAzureAsyncPollingDone(rawResponse) {
+    const state = getResponseStatus(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Sends a request to the URI of the provisioned resource if needed.
+ */
+async function sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig) {
+    switch (lroResourceLocationConfig) {
+        case "original-uri":
+            return lro.sendPollRequest(lro.requestPath);
+        case "azure-async-operation":
+            return undefined;
+        case "location":
+        default:
+            return lro.sendPollRequest(resourceLocation !== null && resourceLocation !== void 0 ? resourceLocation : lro.requestPath);
+    }
+}
+function processAzureAsyncOperationResult(lro, resourceLocation, lroResourceLocationConfig) {
+    return (response) => {
+        if (isAzureAsyncPollingDone(response.rawResponse)) {
+            if (resourceLocation === undefined) {
+                return Object.assign(Object.assign({}, response), { done: true });
+            }
+            else {
+                return Object.assign(Object.assign({}, response), { done: false, next: async () => {
+                        const finalResponse = await sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig);
+                        return Object.assign(Object.assign({}, (finalResponse !== null && finalResponse !== void 0 ? finalResponse : response)), { done: true });
+                    } });
+            }
+        }
+        return Object.assign(Object.assign({}, response), { done: false });
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+function getProvisioningState(rawResponse) {
+    var _a, _b;
+    const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    const state = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;
+    return typeof state === "string" ? state.toLowerCase() : "succeeded";
+}
+function isBodyPollingDone(rawResponse) {
+    const state = getProvisioningState(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Creates a polling strategy based on BodyPolling which uses the provisioning state
+ * from the result to determine the current operation state
+ */
+function processBodyPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isBodyPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+function isLocationPollingDone(rawResponse) {
+    return !isUnexpectedPollingResponse(rawResponse) && rawResponse.statusCode !== 202;
+}
+function processLocationPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isLocationPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function processPassthroughOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: true });
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * creates a stepping function that maps an LRO state to another.
+ */
+function createGetLroStatusFromResponse(lroPrimitives, config, lroResourceLocationConfig) {
+    switch (config.mode) {
+        case "AzureAsync": {
+            return processAzureAsyncOperationResult(lroPrimitives, config.resourceLocation, lroResourceLocationConfig);
+        }
+        case "Location": {
+            return processLocationPollingOperationResult;
+        }
+        case "Body": {
+            return processBodyPollingOperationResult;
+        }
+        default: {
+            return processPassthroughOperationResult;
+        }
+    }
+}
+/**
+ * Creates a polling operation.
+ */
+function createPoll(lroPrimitives) {
+    return async (path, pollerConfig, getLroStatusFromResponse) => {
+        const response = await lroPrimitives.sendPollRequest(path);
+        const retryAfter = response.rawResponse.headers["retry-after"];
+        if (retryAfter !== undefined) {
+            const retryAfterInMs = parseInt(retryAfter);
+            pollerConfig.intervalInMs = isNaN(retryAfterInMs)
+                ? calculatePollingIntervalFromDate(new Date(retryAfter), pollerConfig.intervalInMs)
+                : retryAfterInMs;
+        }
+        return getLroStatusFromResponse(response);
+    };
+}
+function calculatePollingIntervalFromDate(retryAfterDate, defaultIntervalInMs) {
+    const timeNow = Math.floor(new Date().getTime());
+    const retryAfterTime = retryAfterDate.getTime();
+    if (timeNow < retryAfterTime) {
+        return retryAfterTime - timeNow;
+    }
+    return defaultIntervalInMs;
+}
+/**
+ * Creates a callback to be used to initialize the polling operation state.
+ * @param state - of the polling operation
+ * @param operationSpec - of the LRO
+ * @param callback - callback to be called when the operation is done
+ * @returns callback that initializes the state of the polling operation
+ */
+function createInitializeState(state, requestPath, requestMethod) {
+    return (response) => {
+        if (isUnexpectedInitialResponse(response.rawResponse))
+            ;
+        state.initialRawResponse = response.rawResponse;
+        state.isStarted = true;
+        state.pollingURL = getPollingUrl(state.initialRawResponse, requestPath);
+        state.config = inferLroMode(requestPath, requestMethod, state.initialRawResponse);
+        /** short circuit polling if body polling is done in the initial request */
+        if (state.config.mode === undefined ||
+            (state.config.mode === "Body" && isBodyPollingDone(state.initialRawResponse))) {
+            state.result = response.flatResponse;
+            state.isCompleted = true;
+        }
+        logger.verbose(`LRO: initial state: ${JSON.stringify(state)}`);
+        return Boolean(state.isCompleted);
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+class GenericPollOperation {
+    constructor(state, lro, lroResourceLocationConfig, processResult, updateState, isDone) {
+        this.state = state;
+        this.lro = lro;
+        this.lroResourceLocationConfig = lroResourceLocationConfig;
+        this.processResult = processResult;
+        this.updateState = updateState;
+        this.isDone = isDone;
+    }
+    setPollerConfig(pollerConfig) {
+        this.pollerConfig = pollerConfig;
+    }
+    /**
+     * General update function for LROPoller, the general process is as follows
+     * 1. Check initial operation result to determine the strategy to use
+     *  - Strategies: Location, Azure-AsyncOperation, Original Uri
+     * 2. Check if the operation result has a terminal state
+     *  - Terminal state will be determined by each strategy
+     *  2.1 If it is terminal state Check if a final GET request is required, if so
+     *      send final GET request and return result from operation. If no final GET
+     *      is required, just return the result from operation.
+     *      - Determining what to call for final request is responsibility of each strategy
+     *  2.2 If it is not terminal state, call the polling operation and go to step 1
+     *      - Determining what to call for polling is responsibility of each strategy
+     *      - Strategies will always use the latest URI for polling if provided otherwise
+     *        the last known one
+     */
+    async update(options) {
+        var _a, _b, _c;
+        const state = this.state;
+        let lastResponse = undefined;
+        if (!state.isStarted) {
+            const initializeState = createInitializeState(state, this.lro.requestPath, this.lro.requestMethod);
+            lastResponse = await this.lro.sendInitialRequest();
+            initializeState(lastResponse);
+        }
+        if (!state.isCompleted) {
+            if (!this.poll || !this.getLroStatusFromResponse) {
+                if (!state.config) {
+                    throw new Error("Bad state: LRO mode is undefined. Please check if the serialized state is well-formed.");
+                }
+                const isDone = this.isDone;
+                this.getLroStatusFromResponse = isDone
+                    ? (response) => (Object.assign(Object.assign({}, response), { done: isDone(response.flatResponse, this.state) }))
+                    : createGetLroStatusFromResponse(this.lro, state.config, this.lroResourceLocationConfig);
+                this.poll = createPoll(this.lro);
+            }
+            if (!state.pollingURL) {
+                throw new Error("Bad state: polling URL is undefined. Please check if the serialized state is well-formed.");
+            }
+            const currentState = await this.poll(state.pollingURL, this.pollerConfig, this.getLroStatusFromResponse);
+            logger.verbose(`LRO: polling response: ${JSON.stringify(currentState.rawResponse)}`);
+            if (currentState.done) {
+                state.result = this.processResult
+                    ? this.processResult(currentState.flatResponse, state)
+                    : currentState.flatResponse;
+                state.isCompleted = true;
+            }
+            else {
+                this.poll = (_a = currentState.next) !== null && _a !== void 0 ? _a : this.poll;
+                state.pollingURL = getPollingUrl(currentState.rawResponse, state.pollingURL);
+            }
+            lastResponse = currentState;
+        }
+        logger.verbose(`LRO: current state: ${JSON.stringify(state)}`);
+        if (lastResponse) {
+            (_b = this.updateState) === null || _b === void 0 ? void 0 : _b.call(this, state, lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.rawResponse);
+        }
+        else {
+            logger.error(`LRO: no response was received`);
+        }
+        (_c = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _c === void 0 ? void 0 : _c.call(options, state);
+        return this;
+    }
+    async cancel() {
+        this.state.isCancelled = true;
+        return this;
+    }
+    /**
+     * Serializes the Poller operation.
+     */
+    toString() {
+        return JSON.stringify({
+            state: this.state
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function deserializeState(serializedState) {
+    try {
+        return JSON.parse(serializedState).state;
+    }
+    catch (e) {
+        throw new Error(`LroEngine: Unable to deserialize state: ${serializedState}`);
+    }
+}
+/**
+ * The LRO Engine, a class that performs polling.
+ */
+class LroEngine extends Poller {
+    constructor(lro, options) {
+        const { intervalInMs = 2000, resumeFrom } = options || {};
+        const state = resumeFrom
+            ? deserializeState(resumeFrom)
+            : {};
+        const operation = new GenericPollOperation(state, lro, options === null || options === void 0 ? void 0 : options.lroResourceLocationConfig, options === null || options === void 0 ? void 0 : options.processResult, options === null || options === void 0 ? void 0 : options.updateState, options === null || options === void 0 ? void 0 : options.isDone);
+        super(operation);
+        this.config = { intervalInMs: intervalInMs };
+        operation.setPollerConfig(this.config);
+    }
+    /**
+     * The method used by the poller to wait before attempting to update its operation.
+     */
+    delay() {
+        return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));
+    }
+}
+
+exports.LroEngine = LroEngine;
 exports.Poller = Poller;
 exports.PollerCancelledError = PollerCancelledError;
 exports.PollerStoppedError = PollerStoppedError;
@@ -49307,7 +50210,42 @@ function descending(a, b)
 
 
 /***/ }),
-/* 893 */,
+/* 893 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(__webpack_require__(237), exports);
+__exportStar(__webpack_require__(545), exports);
+//# sourceMappingURL=index.js.map
+
+/***/ }),
 /* 894 */,
 /* 895 */,
 /* 896 */
@@ -49522,6 +50460,21 @@ function state(list, sortMethod)
 
 "use strict";
 
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 Object.defineProperty(exports, "__esModule", { value: true });
 //# sourceMappingURL=attributes.js.map
 
@@ -49557,7 +50510,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
     o[k2] = m[k];
 }));
 var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 __exportStar(__webpack_require__(764), exports);
@@ -49571,7 +50524,49 @@ __exportStar(__webpack_require__(764), exports);
 /* 915 */,
 /* 916 */,
 /* 917 */,
-/* 918 */,
+/* 918 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NoopTextMapPropagator = void 0;
+/**
+ * No-op implementations of {@link TextMapPropagator}.
+ */
+var NoopTextMapPropagator = /** @class */ (function () {
+    function NoopTextMapPropagator() {
+    }
+    /** Noop inject function does nothing */
+    NoopTextMapPropagator.prototype.inject = function (_context, _carrier) { };
+    /** Noop extract function does nothing and returns the input context */
+    NoopTextMapPropagator.prototype.extract = function (context, _carrier) {
+        return context;
+    };
+    NoopTextMapPropagator.prototype.fields = function () {
+        return [];
+    };
+    return NoopTextMapPropagator;
+}());
+exports.NoopTextMapPropagator = NoopTextMapPropagator;
+//# sourceMappingURL=NoopTextMapPropagator.js.map
+
+/***/ }),
 /* 919 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -49622,17 +50617,40 @@ __exportStar(__webpack_require__(764), exports);
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const os = __webpack_require__(87);
-const path = __webpack_require__(622);
-const pathHelper = __webpack_require__(972);
+exports.Pattern = void 0;
+const os = __importStar(__webpack_require__(87));
+const path = __importStar(__webpack_require__(622));
+const pathHelper = __importStar(__webpack_require__(972));
+const assert_1 = __importDefault(__webpack_require__(357));
 const minimatch_1 = __webpack_require__(93);
 const internal_match_kind_1 = __webpack_require__(327);
 const internal_path_1 = __webpack_require__(383);
 const IS_WINDOWS = process.platform === 'win32';
 class Pattern {
-    constructor(patternOrNegate, segments) {
+    constructor(patternOrNegate, isImplicitPattern = false, segments, homedir) {
         /**
          * Indicates whether matches should be excluded from the result set
          */
@@ -49646,9 +50664,9 @@ class Pattern {
         else {
             // Convert to pattern
             segments = segments || [];
-            assert(segments.length, `Parameter 'segments' must not empty`);
+            assert_1.default(segments.length, `Parameter 'segments' must not empty`);
             const root = Pattern.getLiteral(segments[0]);
-            assert(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
+            assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`);
             pattern = new internal_path_1.Path(segments).toString().trim();
             if (patternOrNegate) {
                 pattern = `!${pattern}`;
@@ -49660,7 +50678,7 @@ class Pattern {
             pattern = pattern.substr(1).trim();
         }
         // Normalize slashes and ensures absolute root
-        pattern = Pattern.fixupPattern(pattern);
+        pattern = Pattern.fixupPattern(pattern, homedir);
         // Segments
         this.segments = new internal_path_1.Path(pattern).segments;
         // Trailing slash indicates the pattern should only match directories, not regular files
@@ -49676,6 +50694,7 @@ class Pattern {
         this.searchPath = new internal_path_1.Path(searchSegments).toString();
         // Root RegExp (required when determining partial match)
         this.rootRegExp = new RegExp(Pattern.regExpEscape(searchSegments[0]), IS_WINDOWS ? 'i' : '');
+        this.isImplicitPattern = isImplicitPattern;
         // Create minimatch
         const minimatchOptions = {
             dot: true,
@@ -49697,11 +50716,11 @@ class Pattern {
             // Normalize slashes
             itemPath = pathHelper.normalizeSeparators(itemPath);
             // Append a trailing slash. Otherwise Minimatch will not match the directory immediately
-            // preceeding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
+            // preceding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
             // false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk.
-            if (!itemPath.endsWith(path.sep)) {
+            if (!itemPath.endsWith(path.sep) && this.isImplicitPattern === false) {
                 // Note, this is safe because the constructor ensures the pattern has an absolute root.
-                // For example, formats like C: and C:foo on Windows are resolved to an aboslute root.
+                // For example, formats like C: and C:foo on Windows are resolved to an absolute root.
                 itemPath = `${itemPath}${path.sep}`;
             }
         }
@@ -49739,15 +50758,15 @@ class Pattern {
     /**
      * Normalizes slashes and ensures absolute root
      */
-    static fixupPattern(pattern) {
+    static fixupPattern(pattern, homedir) {
         // Empty
-        assert(pattern, 'pattern cannot be empty');
+        assert_1.default(pattern, 'pattern cannot be empty');
         // Must not contain `.` segment, unless first segment
         // Must not contain `..` segment
         const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x));
-        assert(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
+        assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`);
         // Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
-        assert(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
+        assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`);
         // Normalize slashes
         pattern = pathHelper.normalizeSeparators(pattern);
         // Replace leading `.` segment
@@ -49756,9 +50775,9 @@ class Pattern {
         }
         // Replace leading `~` segment
         else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) {
-            const homedir = os.homedir();
-            assert(homedir, 'Unable to determine HOME directory');
-            assert(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
+            homedir = homedir || os.homedir();
+            assert_1.default(homedir, 'Unable to determine HOME directory');
+            assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`);
             pattern = Pattern.globEscape(homedir) + pattern.substr(1);
         }
         // Replace relative drive root, e.g. pattern is C: or C:foo
@@ -49854,53 +50873,7 @@ exports.Pattern = Pattern;
 //# sourceMappingURL=internal-pattern.js.map
 
 /***/ }),
-/* 924 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NoopContextManager = void 0;
-var context_1 = __webpack_require__(715);
-var NoopContextManager = /** @class */ (function () {
-    function NoopContextManager() {
-    }
-    NoopContextManager.prototype.active = function () {
-        return context_1.Context.ROOT_CONTEXT;
-    };
-    NoopContextManager.prototype.with = function (context, fn) {
-        return fn();
-    };
-    NoopContextManager.prototype.bind = function (target, context) {
-        return target;
-    };
-    NoopContextManager.prototype.enable = function () {
-        return this;
-    };
-    NoopContextManager.prototype.disable = function () {
-        return this;
-    };
-    return NoopContextManager;
-}());
-exports.NoopContextManager = NoopContextManager;
-//# sourceMappingURL=NoopContextManager.js.map
-
-/***/ }),
+/* 924 */,
 /* 925 */,
 /* 926 */,
 /* 927 */,
@@ -49914,135 +50887,92 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(422);
 var util = _interopDefault(__webpack_require__(669));
 var os = __webpack_require__(87);
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-function log(message) {
-    var args = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        args[_i - 1] = arguments[_i];
-    }
-    process.stderr.write("" + util.format.apply(util, tslib.__spread([message], args)) + os.EOL);
+// Copyright (c) Microsoft Corporation.
+function log(message, ...args) {
+    process.stderr.write(`${util.format(message, ...args)}${os.EOL}`);
 }
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
-var enabledString;
-var enabledNamespaces = [];
-var skippedNamespaces = [];
-var debuggers = [];
+// Copyright (c) Microsoft Corporation.
+const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
+let enabledString;
+let enabledNamespaces = [];
+let skippedNamespaces = [];
+const debuggers = [];
 if (debugEnvVariable) {
     enable(debugEnvVariable);
 }
+const debugObj = Object.assign((namespace) => {
+    return createDebugger(namespace);
+}, {
+    enable,
+    enabled,
+    disable,
+    log
+});
 function enable(namespaces) {
-    var e_1, _a, e_2, _b;
     enabledString = namespaces;
     enabledNamespaces = [];
     skippedNamespaces = [];
-    var wildcard = /\*/g;
-    var namespaceList = namespaces.split(",").map(function (ns) { return ns.trim().replace(wildcard, ".*?"); });
-    try {
-        for (var namespaceList_1 = tslib.__values(namespaceList), namespaceList_1_1 = namespaceList_1.next(); !namespaceList_1_1.done; namespaceList_1_1 = namespaceList_1.next()) {
-            var ns = namespaceList_1_1.value;
-            if (ns.startsWith("-")) {
-                skippedNamespaces.push(new RegExp("^" + ns.substr(1) + "$"));
-            }
-            else {
-                enabledNamespaces.push(new RegExp("^" + ns + "$"));
-            }
+    const wildcard = /\*/g;
+    const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?"));
+    for (const ns of namespaceList) {
+        if (ns.startsWith("-")) {
+            skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));
+        }
+        else {
+            enabledNamespaces.push(new RegExp(`^${ns}$`));
         }
     }
-    catch (e_1_1) { e_1 = { error: e_1_1 }; }
-    finally {
-        try {
-            if (namespaceList_1_1 && !namespaceList_1_1.done && (_a = namespaceList_1.return)) _a.call(namespaceList_1);
-        }
-        finally { if (e_1) throw e_1.error; }
-    }
-    try {
-        for (var debuggers_1 = tslib.__values(debuggers), debuggers_1_1 = debuggers_1.next(); !debuggers_1_1.done; debuggers_1_1 = debuggers_1.next()) {
-            var instance = debuggers_1_1.value;
-            instance.enabled = enabled(instance.namespace);
-        }
-    }
-    catch (e_2_1) { e_2 = { error: e_2_1 }; }
-    finally {
-        try {
-            if (debuggers_1_1 && !debuggers_1_1.done && (_b = debuggers_1.return)) _b.call(debuggers_1);
-        }
-        finally { if (e_2) throw e_2.error; }
+    for (const instance of debuggers) {
+        instance.enabled = enabled(instance.namespace);
     }
 }
 function enabled(namespace) {
-    var e_3, _a, e_4, _b;
     if (namespace.endsWith("*")) {
         return true;
     }
-    try {
-        for (var skippedNamespaces_1 = tslib.__values(skippedNamespaces), skippedNamespaces_1_1 = skippedNamespaces_1.next(); !skippedNamespaces_1_1.done; skippedNamespaces_1_1 = skippedNamespaces_1.next()) {
-            var skipped = skippedNamespaces_1_1.value;
-            if (skipped.test(namespace)) {
-                return false;
-            }
+    for (const skipped of skippedNamespaces) {
+        if (skipped.test(namespace)) {
+            return false;
         }
     }
-    catch (e_3_1) { e_3 = { error: e_3_1 }; }
-    finally {
-        try {
-            if (skippedNamespaces_1_1 && !skippedNamespaces_1_1.done && (_a = skippedNamespaces_1.return)) _a.call(skippedNamespaces_1);
+    for (const enabledNamespace of enabledNamespaces) {
+        if (enabledNamespace.test(namespace)) {
+            return true;
         }
-        finally { if (e_3) throw e_3.error; }
-    }
-    try {
-        for (var enabledNamespaces_1 = tslib.__values(enabledNamespaces), enabledNamespaces_1_1 = enabledNamespaces_1.next(); !enabledNamespaces_1_1.done; enabledNamespaces_1_1 = enabledNamespaces_1.next()) {
-            var enabled_1 = enabledNamespaces_1_1.value;
-            if (enabled_1.test(namespace)) {
-                return true;
-            }
-        }
-    }
-    catch (e_4_1) { e_4 = { error: e_4_1 }; }
-    finally {
-        try {
-            if (enabledNamespaces_1_1 && !enabledNamespaces_1_1.done && (_b = enabledNamespaces_1.return)) _b.call(enabledNamespaces_1);
-        }
-        finally { if (e_4) throw e_4.error; }
     }
     return false;
 }
 function disable() {
-    var result = enabledString || "";
+    const result = enabledString || "";
     enable("");
     return result;
 }
 function createDebugger(namespace) {
-    function debug() {
-        var args = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            args[_i] = arguments[_i];
-        }
+    const newDebugger = Object.assign(debug, {
+        enabled: enabled(namespace),
+        destroy,
+        log: debugObj.log,
+        namespace,
+        extend
+    });
+    function debug(...args) {
         if (!newDebugger.enabled) {
             return;
         }
         if (args.length > 0) {
-            args[0] = namespace + " " + args[0];
+            args[0] = `${namespace} ${args[0]}`;
         }
-        newDebugger.log.apply(newDebugger, tslib.__spread(args));
+        newDebugger.log(...args);
     }
-    var newDebugger = Object.assign(debug, {
-        enabled: enabled(namespace),
-        destroy: destroy,
-        log: debugObj.log,
-        namespace: namespace,
-        extend: extend
-    });
     debuggers.push(newDebugger);
     return newDebugger;
 }
 function destroy() {
-    var index = debuggers.indexOf(this);
+    const index = debuggers.indexOf(this);
     if (index >= 0) {
         debuggers.splice(index, 1);
         return true;
@@ -50050,49 +50980,37 @@ function destroy() {
     return false;
 }
 function extend(namespace) {
-    var newDebugger = createDebugger(this.namespace + ":" + namespace);
+    const newDebugger = createDebugger(`${this.namespace}:${namespace}`);
     newDebugger.log = this.log;
     return newDebugger;
 }
-var debugObj = Object.assign(function (namespace) {
-    return createDebugger(namespace);
-}, {
-    enable: enable,
-    enabled: enabled,
-    disable: disable,
-    log: log
-});
 
-// Copyright (c) Microsoft Corporation. All rights reserved.
-var registeredLoggers = new Set();
-var logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
-var azureLogLevel;
+// Copyright (c) Microsoft Corporation.
+const registeredLoggers = new Set();
+const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
+let azureLogLevel;
 /**
  * The AzureLogger provides a mechanism for overriding where logs are output to.
  * By default, logs are sent to stderr.
  * Override the `log` method to redirect logs to another location.
  */
-var AzureLogger = debugObj("azure");
-AzureLogger.log = function () {
-    var args = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-        args[_i] = arguments[_i];
-    }
-    debugObj.log.apply(debugObj, tslib.__spread(args));
+const AzureLogger = debugObj("azure");
+AzureLogger.log = (...args) => {
+    debugObj.log(...args);
 };
-var AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
+const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
 if (logLevelFromEnv) {
     // avoid calling setLogLevel because we don't want a mis-set environment variable to crash
     if (isAzureLogLevel(logLevelFromEnv)) {
         setLogLevel(logLevelFromEnv);
     }
     else {
-        console.error("AZURE_LOG_LEVEL set to unknown log level '" + logLevelFromEnv + "'; logging is not enabled. Acceptable values: " + AZURE_LOG_LEVELS.join(", ") + ".");
+        console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`);
     }
 }
 /**
  * Immediately enables logging at the specified log level.
- * @param level The log level to enable for logging.
+ * @param level - The log level to enable for logging.
  * Options from most verbose to least verbose are:
  * - verbose
  * - info
@@ -50100,27 +51018,16 @@ if (logLevelFromEnv) {
  * - error
  */
 function setLogLevel(level) {
-    var e_1, _a;
     if (level && !isAzureLogLevel(level)) {
-        throw new Error("Unknown log level '" + level + "'. Acceptable values: " + AZURE_LOG_LEVELS.join(","));
+        throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`);
     }
     azureLogLevel = level;
-    var enabledNamespaces = [];
-    try {
-        for (var registeredLoggers_1 = tslib.__values(registeredLoggers), registeredLoggers_1_1 = registeredLoggers_1.next(); !registeredLoggers_1_1.done; registeredLoggers_1_1 = registeredLoggers_1.next()) {
-            var logger = registeredLoggers_1_1.value;
-            if (shouldEnable(logger)) {
-                enabledNamespaces.push(logger.namespace);
-            }
+    const enabledNamespaces = [];
+    for (const logger of registeredLoggers) {
+        if (shouldEnable(logger)) {
+            enabledNamespaces.push(logger.namespace);
         }
     }
-    catch (e_1_1) { e_1 = { error: e_1_1 }; }
-    finally {
-        try {
-            if (registeredLoggers_1_1 && !registeredLoggers_1_1.done && (_a = registeredLoggers_1.return)) _a.call(registeredLoggers_1);
-        }
-        finally { if (e_1) throw e_1.error; }
-    }
     debugObj.enable(enabledNamespaces.join(","));
 }
 /**
@@ -50129,7 +51036,7 @@ function setLogLevel(level) {
 function getLogLevel() {
     return azureLogLevel;
 }
-var levelMap = {
+const levelMap = {
     verbose: 400,
     info: 300,
     warning: 200,
@@ -50137,11 +51044,11 @@ var levelMap = {
 };
 /**
  * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.
- * @param namespace The name of the SDK package.
- * @ignore
+ * @param namespace - The name of the SDK package.
+ * @hidden
  */
 function createClientLogger(namespace) {
-    var clientRootLogger = AzureLogger.extend(namespace);
+    const clientRootLogger = AzureLogger.extend(namespace);
     patchLogMethod(AzureLogger, clientRootLogger);
     return {
         error: createLogger(clientRootLogger, "error"),
@@ -50151,21 +51058,17 @@ function createClientLogger(namespace) {
     };
 }
 function patchLogMethod(parent, child) {
-    child.log = function () {
-        var args = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            args[_i] = arguments[_i];
-        }
-        parent.log.apply(parent, tslib.__spread(args));
+    child.log = (...args) => {
+        parent.log(...args);
     };
 }
 function createLogger(parent, level) {
-    var logger = Object.assign(parent.extend(level), {
-        level: level
+    const logger = Object.assign(parent.extend(level), {
+        level
     });
     patchLogMethod(parent, logger);
     if (shouldEnable(logger)) {
-        var enabledNamespaces = debugObj.disable();
+        const enabledNamespaces = debugObj.disable();
         debugObj.enable(enabledNamespaces + "," + logger.namespace);
     }
     registeredLoggers.add(logger);
@@ -50229,151 +51132,1336 @@ exports.SocketTimeout = 5000;
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.CanonicalCode = void 0;
+exports.SpanStatusCode = void 0;
 /**
- * An enumeration of canonical status codes.
+ * An enumeration of status codes.
  */
-var CanonicalCode;
-(function (CanonicalCode) {
+var SpanStatusCode;
+(function (SpanStatusCode) {
     /**
-     * Not an error; returned on success
+     * The default status.
      */
-    CanonicalCode[CanonicalCode["OK"] = 0] = "OK";
+    SpanStatusCode[SpanStatusCode["UNSET"] = 0] = "UNSET";
     /**
-     * The operation was cancelled (typically by the caller).
+     * The operation has been validated by an Application developer or
+     * Operator to have completed successfully.
      */
-    CanonicalCode[CanonicalCode["CANCELLED"] = 1] = "CANCELLED";
+    SpanStatusCode[SpanStatusCode["OK"] = 1] = "OK";
     /**
-     * Unknown error.  An example of where this error may be returned is
-     * if a status value received from another address space belongs to
-     * an error-space that is not known in this address space.  Also
-     * errors raised by APIs that do not return enough error information
-     * may be converted to this error.
+     * The operation contains an error.
      */
-    CanonicalCode[CanonicalCode["UNKNOWN"] = 2] = "UNKNOWN";
-    /**
-     * Client specified an invalid argument.  Note that this differs
-     * from FAILED_PRECONDITION.  INVALID_ARGUMENT indicates arguments
-     * that are problematic regardless of the state of the system
-     * (e.g., a malformed file name).
-     */
-    CanonicalCode[CanonicalCode["INVALID_ARGUMENT"] = 3] = "INVALID_ARGUMENT";
-    /**
-     * Deadline expired before operation could complete.  For operations
-     * that change the state of the system, this error may be returned
-     * even if the operation has completed successfully.  For example, a
-     * successful response from a server could have been delayed long
-     * enough for the deadline to expire.
-     */
-    CanonicalCode[CanonicalCode["DEADLINE_EXCEEDED"] = 4] = "DEADLINE_EXCEEDED";
-    /**
-     * Some requested entity (e.g., file or directory) was not found.
-     */
-    CanonicalCode[CanonicalCode["NOT_FOUND"] = 5] = "NOT_FOUND";
-    /**
-     * Some entity that we attempted to create (e.g., file or directory)
-     * already exists.
-     */
-    CanonicalCode[CanonicalCode["ALREADY_EXISTS"] = 6] = "ALREADY_EXISTS";
-    /**
-     * The caller does not have permission to execute the specified
-     * operation.  PERMISSION_DENIED must not be used for rejections
-     * caused by exhausting some resource (use RESOURCE_EXHAUSTED
-     * instead for those errors).  PERMISSION_DENIED must not be
-     * used if the caller can not be identified (use UNAUTHENTICATED
-     * instead for those errors).
-     */
-    CanonicalCode[CanonicalCode["PERMISSION_DENIED"] = 7] = "PERMISSION_DENIED";
-    /**
-     * Some resource has been exhausted, perhaps a per-user quota, or
-     * perhaps the entire file system is out of space.
-     */
-    CanonicalCode[CanonicalCode["RESOURCE_EXHAUSTED"] = 8] = "RESOURCE_EXHAUSTED";
-    /**
-     * Operation was rejected because the system is not in a state
-     * required for the operation's execution.  For example, directory
-     * to be deleted may be non-empty, an rmdir operation is applied to
-     * a non-directory, etc.
-     *
-     * A litmus test that may help a service implementor in deciding
-     * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
-     *
-     *  - Use UNAVAILABLE if the client can retry just the failing call.
-     *  - Use ABORTED if the client should retry at a higher-level
-     *    (e.g., restarting a read-modify-write sequence).
-     *  - Use FAILED_PRECONDITION if the client should not retry until
-     *    the system state has been explicitly fixed.  E.g., if an "rmdir"
-     *    fails because the directory is non-empty, FAILED_PRECONDITION
-     *    should be returned since the client should not retry unless
-     *    they have first fixed up the directory by deleting files from it.
-     *  - Use FAILED_PRECONDITION if the client performs conditional
-     *    REST Get/Update/Delete on a resource and the resource on the
-     *    server does not match the condition. E.g., conflicting
-     *    read-modify-write on the same resource.
-     */
-    CanonicalCode[CanonicalCode["FAILED_PRECONDITION"] = 9] = "FAILED_PRECONDITION";
-    /**
-     * The operation was aborted, typically due to a concurrency issue
-     * like sequencer check failures, transaction aborts, etc.
-     *
-     * See litmus test above for deciding between FAILED_PRECONDITION,
-     * ABORTED, and UNAVAILABLE.
-     */
-    CanonicalCode[CanonicalCode["ABORTED"] = 10] = "ABORTED";
-    /**
-     * Operation was attempted past the valid range.  E.g., seeking or
-     * reading past end of file.
-     *
-     * Unlike INVALID_ARGUMENT, this error indicates a problem that may
-     * be fixed if the system state changes. For example, a 32-bit file
-     * system will generate INVALID_ARGUMENT if asked to read at an
-     * offset that is not in the range [0,2^32-1], but it will generate
-     * OUT_OF_RANGE if asked to read from an offset past the current
-     * file size.
-     *
-     * There is a fair bit of overlap between FAILED_PRECONDITION and
-     * OUT_OF_RANGE.  We recommend using OUT_OF_RANGE (the more specific
-     * error) when it applies so that callers who are iterating through
-     * a space can easily look for an OUT_OF_RANGE error to detect when
-     * they are done.
-     */
-    CanonicalCode[CanonicalCode["OUT_OF_RANGE"] = 11] = "OUT_OF_RANGE";
-    /**
-     * Operation is not implemented or not supported/enabled in this service.
-     */
-    CanonicalCode[CanonicalCode["UNIMPLEMENTED"] = 12] = "UNIMPLEMENTED";
-    /**
-     * Internal errors.  Means some invariants expected by underlying
-     * system has been broken.  If you see one of these errors,
-     * something is very broken.
-     */
-    CanonicalCode[CanonicalCode["INTERNAL"] = 13] = "INTERNAL";
-    /**
-     * The service is currently unavailable.  This is a most likely a
-     * transient condition and may be corrected by retrying with
-     * a backoff.
-     *
-     * See litmus test above for deciding between FAILED_PRECONDITION,
-     * ABORTED, and UNAVAILABLE.
-     */
-    CanonicalCode[CanonicalCode["UNAVAILABLE"] = 14] = "UNAVAILABLE";
-    /**
-     * Unrecoverable data loss or corruption.
-     */
-    CanonicalCode[CanonicalCode["DATA_LOSS"] = 15] = "DATA_LOSS";
-    /**
-     * The request does not have valid authentication credentials for the
-     * operation.
-     */
-    CanonicalCode[CanonicalCode["UNAUTHENTICATED"] = 16] = "UNAUTHENTICATED";
-})(CanonicalCode = exports.CanonicalCode || (exports.CanonicalCode = {}));
+    SpanStatusCode[SpanStatusCode["ERROR"] = 2] = "ERROR";
+})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));
 //# sourceMappingURL=status.js.map
 
 /***/ }),
 /* 933 */,
 /* 934 */,
 /* 935 */,
-/* 936 */,
+/* 936 */
+/***/ (function(module, __unusedexports, __webpack_require__) {
+
+"use strict";
+
+const punycode = __webpack_require__(815);
+const tr46 = __webpack_require__(976);
+
+const specialSchemes = {
+  ftp: 21,
+  file: null,
+  gopher: 70,
+  http: 80,
+  https: 443,
+  ws: 80,
+  wss: 443
+};
+
+const failure = Symbol("failure");
+
+function countSymbols(str) {
+  return punycode.ucs2.decode(str).length;
+}
+
+function at(input, idx) {
+  const c = input[idx];
+  return isNaN(c) ? undefined : String.fromCodePoint(c);
+}
+
+function isASCIIDigit(c) {
+  return c >= 0x30 && c <= 0x39;
+}
+
+function isASCIIAlpha(c) {
+  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
+}
+
+function isASCIIAlphanumeric(c) {
+  return isASCIIAlpha(c) || isASCIIDigit(c);
+}
+
+function isASCIIHex(c) {
+  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
+}
+
+function isSingleDot(buffer) {
+  return buffer === "." || buffer.toLowerCase() === "%2e";
+}
+
+function isDoubleDot(buffer) {
+  buffer = buffer.toLowerCase();
+  return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
+}
+
+function isWindowsDriveLetterCodePoints(cp1, cp2) {
+  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
+}
+
+function isWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
+}
+
+function isNormalizedWindowsDriveLetterString(string) {
+  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
+}
+
+function containsForbiddenHostCodePoint(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function containsForbiddenHostCodePointExcludingPercent(string) {
+  return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function isSpecialScheme(scheme) {
+  return specialSchemes[scheme] !== undefined;
+}
+
+function isSpecial(url) {
+  return isSpecialScheme(url.scheme);
+}
+
+function defaultPort(scheme) {
+  return specialSchemes[scheme];
+}
+
+function percentEncode(c) {
+  let hex = c.toString(16).toUpperCase();
+  if (hex.length === 1) {
+    hex = "0" + hex;
+  }
+
+  return "%" + hex;
+}
+
+function utf8PercentEncode(c) {
+  const buf = new Buffer(c);
+
+  let str = "";
+
+  for (let i = 0; i < buf.length; ++i) {
+    str += percentEncode(buf[i]);
+  }
+
+  return str;
+}
+
+function utf8PercentDecode(str) {
+  const input = new Buffer(str);
+  const output = [];
+  for (let i = 0; i < input.length; ++i) {
+    if (input[i] !== 37) {
+      output.push(input[i]);
+    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
+      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
+      i += 2;
+    } else {
+      output.push(input[i]);
+    }
+  }
+  return new Buffer(output).toString();
+}
+
+function isC0ControlPercentEncode(c) {
+  return c <= 0x1F || c > 0x7E;
+}
+
+const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
+function isPathPercentEncode(c) {
+  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
+}
+
+const extraUserinfoPercentEncodeSet =
+  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
+function isUserinfoPercentEncode(c) {
+  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
+}
+
+function percentEncodeChar(c, encodeSetPredicate) {
+  const cStr = String.fromCodePoint(c);
+
+  if (encodeSetPredicate(c)) {
+    return utf8PercentEncode(cStr);
+  }
+
+  return cStr;
+}
+
+function parseIPv4Number(input) {
+  let R = 10;
+
+  if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
+    input = input.substring(2);
+    R = 16;
+  } else if (input.length >= 2 && input.charAt(0) === "0") {
+    input = input.substring(1);
+    R = 8;
+  }
+
+  if (input === "") {
+    return 0;
+  }
+
+  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
+  if (regex.test(input)) {
+    return failure;
+  }
+
+  return parseInt(input, R);
+}
+
+function parseIPv4(input) {
+  const parts = input.split(".");
+  if (parts[parts.length - 1] === "") {
+    if (parts.length > 1) {
+      parts.pop();
+    }
+  }
+
+  if (parts.length > 4) {
+    return input;
+  }
+
+  const numbers = [];
+  for (const part of parts) {
+    if (part === "") {
+      return input;
+    }
+    const n = parseIPv4Number(part);
+    if (n === failure) {
+      return input;
+    }
+
+    numbers.push(n);
+  }
+
+  for (let i = 0; i < numbers.length - 1; ++i) {
+    if (numbers[i] > 255) {
+      return failure;
+    }
+  }
+  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
+    return failure;
+  }
+
+  let ipv4 = numbers.pop();
+  let counter = 0;
+
+  for (const n of numbers) {
+    ipv4 += n * Math.pow(256, 3 - counter);
+    ++counter;
+  }
+
+  return ipv4;
+}
+
+function serializeIPv4(address) {
+  let output = "";
+  let n = address;
+
+  for (let i = 1; i <= 4; ++i) {
+    output = String(n % 256) + output;
+    if (i !== 4) {
+      output = "." + output;
+    }
+    n = Math.floor(n / 256);
+  }
+
+  return output;
+}
+
+function parseIPv6(input) {
+  const address = [0, 0, 0, 0, 0, 0, 0, 0];
+  let pieceIndex = 0;
+  let compress = null;
+  let pointer = 0;
+
+  input = punycode.ucs2.decode(input);
+
+  if (input[pointer] === 58) {
+    if (input[pointer + 1] !== 58) {
+      return failure;
+    }
+
+    pointer += 2;
+    ++pieceIndex;
+    compress = pieceIndex;
+  }
+
+  while (pointer < input.length) {
+    if (pieceIndex === 8) {
+      return failure;
+    }
+
+    if (input[pointer] === 58) {
+      if (compress !== null) {
+        return failure;
+      }
+      ++pointer;
+      ++pieceIndex;
+      compress = pieceIndex;
+      continue;
+    }
+
+    let value = 0;
+    let length = 0;
+
+    while (length < 4 && isASCIIHex(input[pointer])) {
+      value = value * 0x10 + parseInt(at(input, pointer), 16);
+      ++pointer;
+      ++length;
+    }
+
+    if (input[pointer] === 46) {
+      if (length === 0) {
+        return failure;
+      }
+
+      pointer -= length;
+
+      if (pieceIndex > 6) {
+        return failure;
+      }
+
+      let numbersSeen = 0;
+
+      while (input[pointer] !== undefined) {
+        let ipv4Piece = null;
+
+        if (numbersSeen > 0) {
+          if (input[pointer] === 46 && numbersSeen < 4) {
+            ++pointer;
+          } else {
+            return failure;
+          }
+        }
+
+        if (!isASCIIDigit(input[pointer])) {
+          return failure;
+        }
+
+        while (isASCIIDigit(input[pointer])) {
+          const number = parseInt(at(input, pointer));
+          if (ipv4Piece === null) {
+            ipv4Piece = number;
+          } else if (ipv4Piece === 0) {
+            return failure;
+          } else {
+            ipv4Piece = ipv4Piece * 10 + number;
+          }
+          if (ipv4Piece > 255) {
+            return failure;
+          }
+          ++pointer;
+        }
+
+        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
+
+        ++numbersSeen;
+
+        if (numbersSeen === 2 || numbersSeen === 4) {
+          ++pieceIndex;
+        }
+      }
+
+      if (numbersSeen !== 4) {
+        return failure;
+      }
+
+      break;
+    } else if (input[pointer] === 58) {
+      ++pointer;
+      if (input[pointer] === undefined) {
+        return failure;
+      }
+    } else if (input[pointer] !== undefined) {
+      return failure;
+    }
+
+    address[pieceIndex] = value;
+    ++pieceIndex;
+  }
+
+  if (compress !== null) {
+    let swaps = pieceIndex - compress;
+    pieceIndex = 7;
+    while (pieceIndex !== 0 && swaps > 0) {
+      const temp = address[compress + swaps - 1];
+      address[compress + swaps - 1] = address[pieceIndex];
+      address[pieceIndex] = temp;
+      --pieceIndex;
+      --swaps;
+    }
+  } else if (compress === null && pieceIndex !== 8) {
+    return failure;
+  }
+
+  return address;
+}
+
+function serializeIPv6(address) {
+  let output = "";
+  const seqResult = findLongestZeroSequence(address);
+  const compress = seqResult.idx;
+  let ignore0 = false;
+
+  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
+    if (ignore0 && address[pieceIndex] === 0) {
+      continue;
+    } else if (ignore0) {
+      ignore0 = false;
+    }
+
+    if (compress === pieceIndex) {
+      const separator = pieceIndex === 0 ? "::" : ":";
+      output += separator;
+      ignore0 = true;
+      continue;
+    }
+
+    output += address[pieceIndex].toString(16);
+
+    if (pieceIndex !== 7) {
+      output += ":";
+    }
+  }
+
+  return output;
+}
+
+function parseHost(input, isSpecialArg) {
+  if (input[0] === "[") {
+    if (input[input.length - 1] !== "]") {
+      return failure;
+    }
+
+    return parseIPv6(input.substring(1, input.length - 1));
+  }
+
+  if (!isSpecialArg) {
+    return parseOpaqueHost(input);
+  }
+
+  const domain = utf8PercentDecode(input);
+  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
+  if (asciiDomain === null) {
+    return failure;
+  }
+
+  if (containsForbiddenHostCodePoint(asciiDomain)) {
+    return failure;
+  }
+
+  const ipv4Host = parseIPv4(asciiDomain);
+  if (typeof ipv4Host === "number" || ipv4Host === failure) {
+    return ipv4Host;
+  }
+
+  return asciiDomain;
+}
+
+function parseOpaqueHost(input) {
+  if (containsForbiddenHostCodePointExcludingPercent(input)) {
+    return failure;
+  }
+
+  let output = "";
+  const decoded = punycode.ucs2.decode(input);
+  for (let i = 0; i < decoded.length; ++i) {
+    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
+  }
+  return output;
+}
+
+function findLongestZeroSequence(arr) {
+  let maxIdx = null;
+  let maxLen = 1; // only find elements > 1
+  let currStart = null;
+  let currLen = 0;
+
+  for (let i = 0; i < arr.length; ++i) {
+    if (arr[i] !== 0) {
+      if (currLen > maxLen) {
+        maxIdx = currStart;
+        maxLen = currLen;
+      }
+
+      currStart = null;
+      currLen = 0;
+    } else {
+      if (currStart === null) {
+        currStart = i;
+      }
+      ++currLen;
+    }
+  }
+
+  // if trailing zeros
+  if (currLen > maxLen) {
+    maxIdx = currStart;
+    maxLen = currLen;
+  }
+
+  return {
+    idx: maxIdx,
+    len: maxLen
+  };
+}
+
+function serializeHost(host) {
+  if (typeof host === "number") {
+    return serializeIPv4(host);
+  }
+
+  // IPv6 serializer
+  if (host instanceof Array) {
+    return "[" + serializeIPv6(host) + "]";
+  }
+
+  return host;
+}
+
+function trimControlChars(url) {
+  return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
+}
+
+function trimTabAndNewline(url) {
+  return url.replace(/\u0009|\u000A|\u000D/g, "");
+}
+
+function shortenPath(url) {
+  const path = url.path;
+  if (path.length === 0) {
+    return;
+  }
+  if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
+    return;
+  }
+
+  path.pop();
+}
+
+function includesCredentials(url) {
+  return url.username !== "" || url.password !== "";
+}
+
+function cannotHaveAUsernamePasswordPort(url) {
+  return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
+}
+
+function isNormalizedWindowsDriveLetter(string) {
+  return /^[A-Za-z]:$/.test(string);
+}
+
+function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
+  this.pointer = 0;
+  this.input = input;
+  this.base = base || null;
+  this.encodingOverride = encodingOverride || "utf-8";
+  this.stateOverride = stateOverride;
+  this.url = url;
+  this.failure = false;
+  this.parseError = false;
+
+  if (!this.url) {
+    this.url = {
+      scheme: "",
+      username: "",
+      password: "",
+      host: null,
+      port: null,
+      path: [],
+      query: null,
+      fragment: null,
+
+      cannotBeABaseURL: false
+    };
+
+    const res = trimControlChars(this.input);
+    if (res !== this.input) {
+      this.parseError = true;
+    }
+    this.input = res;
+  }
+
+  const res = trimTabAndNewline(this.input);
+  if (res !== this.input) {
+    this.parseError = true;
+  }
+  this.input = res;
+
+  this.state = stateOverride || "scheme start";
+
+  this.buffer = "";
+  this.atFlag = false;
+  this.arrFlag = false;
+  this.passwordTokenSeenFlag = false;
+
+  this.input = punycode.ucs2.decode(this.input);
+
+  for (; this.pointer <= this.input.length; ++this.pointer) {
+    const c = this.input[this.pointer];
+    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
+
+    // exec state machine
+    const ret = this["parse " + this.state](c, cStr);
+    if (!ret) {
+      break; // terminate algorithm
+    } else if (ret === failure) {
+      this.failure = true;
+      break;
+    }
+  }
+}
+
+URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
+  if (isASCIIAlpha(c)) {
+    this.buffer += cStr.toLowerCase();
+    this.state = "scheme";
+  } else if (!this.stateOverride) {
+    this.state = "no scheme";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
+  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
+    this.buffer += cStr.toLowerCase();
+  } else if (c === 58) {
+    if (this.stateOverride) {
+      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
+        return false;
+      }
+
+      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
+        return false;
+      }
+
+      if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
+        return false;
+      }
+    }
+    this.url.scheme = this.buffer;
+    this.buffer = "";
+    if (this.stateOverride) {
+      return false;
+    }
+    if (this.url.scheme === "file") {
+      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
+        this.parseError = true;
+      }
+      this.state = "file";
+    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
+      this.state = "special relative or authority";
+    } else if (isSpecial(this.url)) {
+      this.state = "special authority slashes";
+    } else if (this.input[this.pointer + 1] === 47) {
+      this.state = "path or authority";
+      ++this.pointer;
+    } else {
+      this.url.cannotBeABaseURL = true;
+      this.url.path.push("");
+      this.state = "cannot-be-a-base-URL path";
+    }
+  } else if (!this.stateOverride) {
+    this.buffer = "";
+    this.state = "no scheme";
+    this.pointer = -1;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
+  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
+    return failure;
+  } else if (this.base.cannotBeABaseURL && c === 35) {
+    this.url.scheme = this.base.scheme;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.url.cannotBeABaseURL = true;
+    this.state = "fragment";
+  } else if (this.base.scheme === "file") {
+    this.state = "file";
+    --this.pointer;
+  } else {
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "relative";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
+  if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
+  this.url.scheme = this.base.scheme;
+  if (isNaN(c)) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+  } else if (c === 47) {
+    this.state = "relative slash";
+  } else if (c === 63) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice();
+    this.url.query = this.base.query;
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (isSpecial(this.url) && c === 92) {
+    this.parseError = true;
+    this.state = "relative slash";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.url.path = this.base.path.slice(0, this.base.path.length - 1);
+
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
+  if (isSpecial(this.url) && (c === 47 || c === 92)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "special authority ignore slashes";
+  } else if (c === 47) {
+    this.state = "authority";
+  } else {
+    this.url.username = this.base.username;
+    this.url.password = this.base.password;
+    this.url.host = this.base.host;
+    this.url.port = this.base.port;
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
+  if (c === 47 && this.input[this.pointer + 1] === 47) {
+    this.state = "special authority ignore slashes";
+    ++this.pointer;
+  } else {
+    this.parseError = true;
+    this.state = "special authority ignore slashes";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
+  if (c !== 47 && c !== 92) {
+    this.state = "authority";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
+  if (c === 64) {
+    this.parseError = true;
+    if (this.atFlag) {
+      this.buffer = "%40" + this.buffer;
+    }
+    this.atFlag = true;
+
+    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
+    const len = countSymbols(this.buffer);
+    for (let pointer = 0; pointer < len; ++pointer) {
+      const codePoint = this.buffer.codePointAt(pointer);
+
+      if (codePoint === 58 && !this.passwordTokenSeenFlag) {
+        this.passwordTokenSeenFlag = true;
+        continue;
+      }
+      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
+      if (this.passwordTokenSeenFlag) {
+        this.url.password += encodedCodePoints;
+      } else {
+        this.url.username += encodedCodePoints;
+      }
+    }
+    this.buffer = "";
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    if (this.atFlag && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+    this.pointer -= countSymbols(this.buffer) + 1;
+    this.buffer = "";
+    this.state = "host";
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse hostname"] =
+URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
+  if (this.stateOverride && this.url.scheme === "file") {
+    --this.pointer;
+    this.state = "file host";
+  } else if (c === 58 && !this.arrFlag) {
+    if (this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "port";
+    if (this.stateOverride === "hostname") {
+      return false;
+    }
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92)) {
+    --this.pointer;
+    if (isSpecial(this.url) && this.buffer === "") {
+      this.parseError = true;
+      return failure;
+    } else if (this.stateOverride && this.buffer === "" &&
+               (includesCredentials(this.url) || this.url.port !== null)) {
+      this.parseError = true;
+      return false;
+    }
+
+    const host = parseHost(this.buffer, isSpecial(this.url));
+    if (host === failure) {
+      return failure;
+    }
+
+    this.url.host = host;
+    this.buffer = "";
+    this.state = "path start";
+    if (this.stateOverride) {
+      return false;
+    }
+  } else {
+    if (c === 91) {
+      this.arrFlag = true;
+    } else if (c === 93) {
+      this.arrFlag = false;
+    }
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
+  if (isASCIIDigit(c)) {
+    this.buffer += cStr;
+  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+             (isSpecial(this.url) && c === 92) ||
+             this.stateOverride) {
+    if (this.buffer !== "") {
+      const port = parseInt(this.buffer);
+      if (port > Math.pow(2, 16) - 1) {
+        this.parseError = true;
+        return failure;
+      }
+      this.url.port = port === defaultPort(this.url.scheme) ? null : port;
+      this.buffer = "";
+    }
+    if (this.stateOverride) {
+      return false;
+    }
+    this.state = "path start";
+    --this.pointer;
+  } else {
+    this.parseError = true;
+    return failure;
+  }
+
+  return true;
+};
+
+const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
+
+URLStateMachine.prototype["parse file"] = function parseFile(c) {
+  this.url.scheme = "file";
+
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file slash";
+  } else if (this.base !== null && this.base.scheme === "file") {
+    if (isNaN(c)) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+    } else if (c === 63) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = "";
+      this.state = "query";
+    } else if (c === 35) {
+      this.url.host = this.base.host;
+      this.url.path = this.base.path.slice();
+      this.url.query = this.base.query;
+      this.url.fragment = "";
+      this.state = "fragment";
+    } else {
+      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
+          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
+          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
+           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
+        this.url.host = this.base.host;
+        this.url.path = this.base.path.slice();
+        shortenPath(this.url);
+      } else {
+        this.parseError = true;
+      }
+
+      this.state = "path";
+      --this.pointer;
+    }
+  } else {
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
+  if (c === 47 || c === 92) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "file host";
+  } else {
+    if (this.base !== null && this.base.scheme === "file") {
+      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
+        this.url.path.push(this.base.path[0]);
+      } else {
+        this.url.host = this.base.host;
+      }
+    }
+    this.state = "path";
+    --this.pointer;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
+  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
+    --this.pointer;
+    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
+      this.parseError = true;
+      this.state = "path";
+    } else if (this.buffer === "") {
+      this.url.host = "";
+      if (this.stateOverride) {
+        return false;
+      }
+      this.state = "path start";
+    } else {
+      let host = parseHost(this.buffer, isSpecial(this.url));
+      if (host === failure) {
+        return failure;
+      }
+      if (host === "localhost") {
+        host = "";
+      }
+      this.url.host = host;
+
+      if (this.stateOverride) {
+        return false;
+      }
+
+      this.buffer = "";
+      this.state = "path start";
+    }
+  } else {
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
+  if (isSpecial(this.url)) {
+    if (c === 92) {
+      this.parseError = true;
+    }
+    this.state = "path";
+
+    if (c !== 47 && c !== 92) {
+      --this.pointer;
+    }
+  } else if (!this.stateOverride && c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (!this.stateOverride && c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else if (c !== undefined) {
+    this.state = "path";
+    if (c !== 47) {
+      --this.pointer;
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse path"] = function parsePath(c) {
+  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
+      (!this.stateOverride && (c === 63 || c === 35))) {
+    if (isSpecial(this.url) && c === 92) {
+      this.parseError = true;
+    }
+
+    if (isDoubleDot(this.buffer)) {
+      shortenPath(this.url);
+      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
+        this.url.path.push("");
+      }
+    } else if (isSingleDot(this.buffer) && c !== 47 &&
+               !(isSpecial(this.url) && c === 92)) {
+      this.url.path.push("");
+    } else if (!isSingleDot(this.buffer)) {
+      if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
+        if (this.url.host !== "" && this.url.host !== null) {
+          this.parseError = true;
+          this.url.host = "";
+        }
+        this.buffer = this.buffer[0] + ":";
+      }
+      this.url.path.push(this.buffer);
+    }
+    this.buffer = "";
+    if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
+      while (this.url.path.length > 1 && this.url.path[0] === "") {
+        this.parseError = true;
+        this.url.path.shift();
+      }
+    }
+    if (c === 63) {
+      this.url.query = "";
+      this.state = "query";
+    }
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += percentEncodeChar(c, isPathPercentEncode);
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
+  if (c === 63) {
+    this.url.query = "";
+    this.state = "query";
+  } else if (c === 35) {
+    this.url.fragment = "";
+    this.state = "fragment";
+  } else {
+    // TODO: Add: not a URL code point
+    if (!isNaN(c) && c !== 37) {
+      this.parseError = true;
+    }
+
+    if (c === 37 &&
+        (!isASCIIHex(this.input[this.pointer + 1]) ||
+         !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    if (!isNaN(c)) {
+      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
+    }
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
+  if (isNaN(c) || (!this.stateOverride && c === 35)) {
+    if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
+      this.encodingOverride = "utf-8";
+    }
+
+    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
+    for (let i = 0; i < buffer.length; ++i) {
+      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
+          buffer[i] === 0x3C || buffer[i] === 0x3E) {
+        this.url.query += percentEncode(buffer[i]);
+      } else {
+        this.url.query += String.fromCodePoint(buffer[i]);
+      }
+    }
+
+    this.buffer = "";
+    if (c === 35) {
+      this.url.fragment = "";
+      this.state = "fragment";
+    }
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.buffer += cStr;
+  }
+
+  return true;
+};
+
+URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
+  if (isNaN(c)) { // do nothing
+  } else if (c === 0x0) {
+    this.parseError = true;
+  } else {
+    // TODO: If c is not a URL code point and not "%", parse error.
+    if (c === 37 &&
+      (!isASCIIHex(this.input[this.pointer + 1]) ||
+        !isASCIIHex(this.input[this.pointer + 2]))) {
+      this.parseError = true;
+    }
+
+    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
+  }
+
+  return true;
+};
+
+function serializeURL(url, excludeFragment) {
+  let output = url.scheme + ":";
+  if (url.host !== null) {
+    output += "//";
+
+    if (url.username !== "" || url.password !== "") {
+      output += url.username;
+      if (url.password !== "") {
+        output += ":" + url.password;
+      }
+      output += "@";
+    }
+
+    output += serializeHost(url.host);
+
+    if (url.port !== null) {
+      output += ":" + url.port;
+    }
+  } else if (url.host === null && url.scheme === "file") {
+    output += "//";
+  }
+
+  if (url.cannotBeABaseURL) {
+    output += url.path[0];
+  } else {
+    for (const string of url.path) {
+      output += "/" + string;
+    }
+  }
+
+  if (url.query !== null) {
+    output += "?" + url.query;
+  }
+
+  if (!excludeFragment && url.fragment !== null) {
+    output += "#" + url.fragment;
+  }
+
+  return output;
+}
+
+function serializeOrigin(tuple) {
+  let result = tuple.scheme + "://";
+  result += serializeHost(tuple.host);
+
+  if (tuple.port !== null) {
+    result += ":" + tuple.port;
+  }
+
+  return result;
+}
+
+module.exports.serializeURL = serializeURL;
+
+module.exports.serializeURLOrigin = function (url) {
+  // https://url.spec.whatwg.org/#concept-url-origin
+  switch (url.scheme) {
+    case "blob":
+      try {
+        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
+      } catch (e) {
+        // serializing an opaque origin returns "null"
+        return "null";
+      }
+    case "ftp":
+    case "gopher":
+    case "http":
+    case "https":
+    case "ws":
+    case "wss":
+      return serializeOrigin({
+        scheme: url.scheme,
+        host: url.host,
+        port: url.port
+      });
+    case "file":
+      // spec says "exercise to the reader", chrome says "file://"
+      return "file://";
+    default:
+      // serializing an opaque origin returns "null"
+      return "null";
+  }
+};
+
+module.exports.basicURLParse = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
+  if (usm.failure) {
+    return "failure";
+  }
+
+  return usm.url;
+};
+
+module.exports.setTheUsername = function (url, username) {
+  url.username = "";
+  const decoded = punycode.ucs2.decode(username);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.setThePassword = function (url, password) {
+  url.password = "";
+  const decoded = punycode.ucs2.decode(password);
+  for (let i = 0; i < decoded.length; ++i) {
+    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+  }
+};
+
+module.exports.serializeHost = serializeHost;
+
+module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
+
+module.exports.serializeInteger = function (integer) {
+  return String(integer);
+};
+
+module.exports.parseURL = function (input, options) {
+  if (options === undefined) {
+    options = {};
+  }
+
+  // We don't handle blobs, so this just delegates:
+  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
+};
+
+
+/***/ }),
 /* 937 */,
 /* 938 */,
 /* 939 */
@@ -50547,9 +52635,32 @@ exports.checkBypass = checkBypass;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
-const assert = __webpack_require__(357);
-const path = __webpack_require__(622);
+exports.safeTrimTrailingSeparator = exports.normalizeSeparators = exports.hasRoot = exports.hasAbsoluteRoot = exports.ensureAbsoluteRoot = exports.dirname = void 0;
+const path = __importStar(__webpack_require__(622));
+const assert_1 = __importDefault(__webpack_require__(357));
 const IS_WINDOWS = process.platform === 'win32';
 /**
  * Similar to path.dirname except normalizes the path separators and slightly better handling for Windows UNC paths.
@@ -50589,8 +52700,8 @@ exports.dirname = dirname;
  * or `C:` are expanded based on the current working directory.
  */
 function ensureAbsoluteRoot(root, itemPath) {
-    assert(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
-    assert(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
+    assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`);
+    assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`);
     // Already rooted
     if (hasAbsoluteRoot(itemPath)) {
         return itemPath;
@@ -50600,7 +52711,7 @@ function ensureAbsoluteRoot(root, itemPath) {
         // Check for itemPath like C: or C:foo
         if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) {
             let cwd = process.cwd();
-            assert(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
+            assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
             // Drive letter matches cwd? Expand to cwd
             if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) {
                 // Drive only, e.g. C:
@@ -50625,11 +52736,11 @@ function ensureAbsoluteRoot(root, itemPath) {
         // Check for itemPath like \ or \foo
         else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) {
             const cwd = process.cwd();
-            assert(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
+            assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`);
             return `${cwd[0]}:\\${itemPath.substr(1)}`;
         }
     }
-    assert(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
+    assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`);
     // Otherwise ensure root ends with a separator
     if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) {
         // Intentionally empty
@@ -50646,7 +52757,7 @@ exports.ensureAbsoluteRoot = ensureAbsoluteRoot;
  * `\\hello\share` and `C:\hello` (and using alternate separator).
  */
 function hasAbsoluteRoot(itemPath) {
-    assert(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
+    assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`);
     // Normalize separators
     itemPath = normalizeSeparators(itemPath);
     // Windows
@@ -50663,7 +52774,7 @@ exports.hasAbsoluteRoot = hasAbsoluteRoot;
  * `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator).
  */
 function hasRoot(itemPath) {
-    assert(itemPath, `isRooted parameter 'itemPath' must not be empty`);
+    assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`);
     // Normalize separators
     itemPath = normalizeSeparators(itemPath);
     // Windows
@@ -50758,56 +52869,203 @@ var TraceFlags;
 
 /***/ }),
 /* 976 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/***/ (function(module, __unusedexports, __webpack_require__) {
 
 "use strict";
 
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_TRACE_API_KEY = exports.GLOBAL_PROPAGATION_API_KEY = exports.GLOBAL_METRICS_API_KEY = exports.GLOBAL_CONTEXT_MANAGER_API_KEY = void 0;
-var platform_1 = __webpack_require__(910);
-exports.GLOBAL_CONTEXT_MANAGER_API_KEY = Symbol.for('io.opentelemetry.js.api.context');
-exports.GLOBAL_METRICS_API_KEY = Symbol.for('io.opentelemetry.js.api.metrics');
-exports.GLOBAL_PROPAGATION_API_KEY = Symbol.for('io.opentelemetry.js.api.propagation');
-exports.GLOBAL_TRACE_API_KEY = Symbol.for('io.opentelemetry.js.api.trace');
-exports._global = platform_1._globalThis;
-/**
- * Make a function which accepts a version integer and returns the instance of an API if the version
- * is compatible, or a fallback version (usually NOOP) if it is not.
- *
- * @param requiredVersion Backwards compatibility version which is required to return the instance
- * @param instance Instance which should be returned if the required version is compatible
- * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible
- */
-function makeGetter(requiredVersion, instance, fallback) {
-    return function (version) {
-        return version === requiredVersion ? instance : fallback;
-    };
+
+var punycode = __webpack_require__(815);
+var mappingTable = __webpack_require__(482);
+
+var PROCESSING_OPTIONS = {
+  TRANSITIONAL: 0,
+  NONTRANSITIONAL: 1
+};
+
+function normalize(str) { // fix bug in v8
+  return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
 }
-exports.makeGetter = makeGetter;
-/**
- * A number which should be incremented each time a backwards incompatible
- * change is made to the API. This number is used when an API package
- * attempts to access the global API to ensure it is getting a compatible
- * version. If the global API is not compatible with the API package
- * attempting to get it, a NOOP API implementation will be returned.
- */
-exports.API_BACKWARDS_COMPATIBILITY_VERSION = 0;
-//# sourceMappingURL=global-utils.js.map
+
+function findStatus(val) {
+  var start = 0;
+  var end = mappingTable.length - 1;
+
+  while (start <= end) {
+    var mid = Math.floor((start + end) / 2);
+
+    var target = mappingTable[mid];
+    if (target[0][0] <= val && target[0][1] >= val) {
+      return target;
+    } else if (target[0][0] > val) {
+      end = mid - 1;
+    } else {
+      start = mid + 1;
+    }
+  }
+
+  return null;
+}
+
+var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+
+function countSymbols(string) {
+  return string
+    // replace every surrogate pair with a BMP symbol
+    .replace(regexAstralSymbols, '_')
+    // then get the length
+    .length;
+}
+
+function mapChars(domain_name, useSTD3, processing_option) {
+  var hasError = false;
+  var processed = "";
+
+  var len = countSymbols(domain_name);
+  for (var i = 0; i < len; ++i) {
+    var codePoint = domain_name.codePointAt(i);
+    var status = findStatus(codePoint);
+
+    switch (status[1]) {
+      case "disallowed":
+        hasError = true;
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "ignored":
+        break;
+      case "mapped":
+        processed += String.fromCodePoint.apply(String, status[2]);
+        break;
+      case "deviation":
+        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        } else {
+          processed += String.fromCodePoint(codePoint);
+        }
+        break;
+      case "valid":
+        processed += String.fromCodePoint(codePoint);
+        break;
+      case "disallowed_STD3_mapped":
+        if (useSTD3) {
+          hasError = true;
+          processed += String.fromCodePoint(codePoint);
+        } else {
+          processed += String.fromCodePoint.apply(String, status[2]);
+        }
+        break;
+      case "disallowed_STD3_valid":
+        if (useSTD3) {
+          hasError = true;
+        }
+
+        processed += String.fromCodePoint(codePoint);
+        break;
+    }
+  }
+
+  return {
+    string: processed,
+    error: hasError
+  };
+}
+
+var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
+
+function validateLabel(label, processing_option) {
+  if (label.substr(0, 4) === "xn--") {
+    label = punycode.toUnicode(label);
+    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
+  }
+
+  var error = false;
+
+  if (normalize(label) !== label ||
+      (label[3] === "-" && label[4] === "-") ||
+      label[0] === "-" || label[label.length - 1] === "-" ||
+      label.indexOf(".") !== -1 ||
+      label.search(combiningMarksRegex) === 0) {
+    error = true;
+  }
+
+  var len = countSymbols(label);
+  for (var i = 0; i < len; ++i) {
+    var status = findStatus(label.codePointAt(i));
+    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
+        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
+         status[1] !== "valid" && status[1] !== "deviation")) {
+      error = true;
+      break;
+    }
+  }
+
+  return {
+    label: label,
+    error: error
+  };
+}
+
+function processing(domain_name, useSTD3, processing_option) {
+  var result = mapChars(domain_name, useSTD3, processing_option);
+  result.string = normalize(result.string);
+
+  var labels = result.string.split(".");
+  for (var i = 0; i < labels.length; ++i) {
+    try {
+      var validation = validateLabel(labels[i]);
+      labels[i] = validation.label;
+      result.error = result.error || validation.error;
+    } catch(e) {
+      result.error = true;
+    }
+  }
+
+  return {
+    string: labels.join("."),
+    error: result.error
+  };
+}
+
+module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
+  var result = processing(domain_name, useSTD3, processing_option);
+  var labels = result.string.split(".");
+  labels = labels.map(function(l) {
+    try {
+      return punycode.toASCII(l);
+    } catch(e) {
+      result.error = true;
+      return l;
+    }
+  });
+
+  if (verifyDnsLength) {
+    var total = labels.slice(0, labels.length - 1).join(".").length;
+    if (total.length > 253 || total.length === 0) {
+      result.error = true;
+    }
+
+    for (var i=0; i < labels.length; ++i) {
+      if (labels.length > 63 || labels.length === 0) {
+        result.error = true;
+        break;
+      }
+    }
+  }
+
+  if (result.error) return null;
+  return labels.join(".");
+};
+
+module.exports.toUnicode = function(domain_name, useSTD3) {
+  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
+
+  return {
+    domain: result.string,
+    error: result.error
+  };
+};
+
+module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
+
 
 /***/ }),
 /* 977 */,
@@ -50824,6 +53082,25 @@ exports.API_BACKWARDS_COMPATIBILITY_VERSION = 0;
 
 "use strict";
 
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
 var __awaiter = (this && this.__awaiter) || function (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) {
@@ -50833,14 +53110,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
         step((generator = generator.apply(thisArg, _arguments || [])).next());
     });
 };
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
-    result["default"] = mod;
-    return result;
-};
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.getExecOutput = exports.exec = void 0;
+const string_decoder_1 = __webpack_require__(304);
 const tr = __importStar(__webpack_require__(9));
 /**
  * Exec a command.
@@ -50866,10 +53138,182 @@ function exec(commandLine, args, options) {
     });
 }
 exports.exec = exec;
+/**
+ * Exec a command and get the output.
+ * Output will be streamed to the live console.
+ * Returns promise with the exit code and collected stdout and stderr
+ *
+ * @param     commandLine           command to execute (can include additional args). Must be correctly escaped.
+ * @param     args                  optional arguments for tool. Escaping is handled by the lib.
+ * @param     options               optional exec options.  See ExecOptions
+ * @returns   Promise<ExecOutput>   exit code, stdout, and stderr
+ */
+function getExecOutput(commandLine, args, options) {
+    var _a, _b;
+    return __awaiter(this, void 0, void 0, function* () {
+        let stdout = '';
+        let stderr = '';
+        //Using string decoder covers the case where a mult-byte character is split
+        const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');
+        const stderrDecoder = new string_decoder_1.StringDecoder('utf8');
+        const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;
+        const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;
+        const stdErrListener = (data) => {
+            stderr += stderrDecoder.write(data);
+            if (originalStdErrListener) {
+                originalStdErrListener(data);
+            }
+        };
+        const stdOutListener = (data) => {
+            stdout += stdoutDecoder.write(data);
+            if (originalStdoutListener) {
+                originalStdoutListener(data);
+            }
+        };
+        const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });
+        const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));
+        //flush any remaining characters
+        stdout += stdoutDecoder.end();
+        stderr += stderrDecoder.end();
+        return {
+            exitCode,
+            stdout,
+            stderr
+        };
+    });
+}
+exports.getExecOutput = getExecOutput;
 //# sourceMappingURL=exec.js.map
 
 /***/ }),
-/* 987 */,
+/* 987 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isCompatible = exports._makeCompatibilityCheck = void 0;
+var version_1 = __webpack_require__(830);
+var re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
+/**
+ * Create a function to test an API version to see if it is compatible with the provided ownVersion.
+ *
+ * The returned function has the following semantics:
+ * - Exact match is always compatible
+ * - Major versions must match exactly
+ *    - 1.x package cannot use global 2.x package
+ *    - 2.x package cannot use global 1.x package
+ * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
+ *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
+ *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
+ * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
+ * - Patch and build tag differences are not considered at this time
+ *
+ * @param ownVersion version which should be checked against
+ */
+function _makeCompatibilityCheck(ownVersion) {
+    var acceptedVersions = new Set([ownVersion]);
+    var rejectedVersions = new Set();
+    var myVersionMatch = ownVersion.match(re);
+    if (!myVersionMatch) {
+        // we cannot guarantee compatibility so we always return noop
+        return function () { return false; };
+    }
+    var ownVersionParsed = {
+        major: +myVersionMatch[1],
+        minor: +myVersionMatch[2],
+        patch: +myVersionMatch[3],
+        prerelease: myVersionMatch[4],
+    };
+    // if ownVersion has a prerelease tag, versions must match exactly
+    if (ownVersionParsed.prerelease != null) {
+        return function isExactmatch(globalVersion) {
+            return globalVersion === ownVersion;
+        };
+    }
+    function _reject(v) {
+        rejectedVersions.add(v);
+        return false;
+    }
+    function _accept(v) {
+        acceptedVersions.add(v);
+        return true;
+    }
+    return function isCompatible(globalVersion) {
+        if (acceptedVersions.has(globalVersion)) {
+            return true;
+        }
+        if (rejectedVersions.has(globalVersion)) {
+            return false;
+        }
+        var globalVersionMatch = globalVersion.match(re);
+        if (!globalVersionMatch) {
+            // cannot parse other version
+            // we cannot guarantee compatibility so we always noop
+            return _reject(globalVersion);
+        }
+        var globalVersionParsed = {
+            major: +globalVersionMatch[1],
+            minor: +globalVersionMatch[2],
+            patch: +globalVersionMatch[3],
+            prerelease: globalVersionMatch[4],
+        };
+        // if globalVersion has a prerelease tag, versions must match exactly
+        if (globalVersionParsed.prerelease != null) {
+            return _reject(globalVersion);
+        }
+        // major versions must match
+        if (ownVersionParsed.major !== globalVersionParsed.major) {
+            return _reject(globalVersion);
+        }
+        if (ownVersionParsed.major === 0) {
+            if (ownVersionParsed.minor === globalVersionParsed.minor &&
+                ownVersionParsed.patch <= globalVersionParsed.patch) {
+                return _accept(globalVersion);
+            }
+            return _reject(globalVersion);
+        }
+        if (ownVersionParsed.minor <= globalVersionParsed.minor) {
+            return _accept(globalVersion);
+        }
+        return _reject(globalVersion);
+    };
+}
+exports._makeCompatibilityCheck = _makeCompatibilityCheck;
+/**
+ * Test an API version to see if it is compatible with this API.
+ *
+ * - Exact match is always compatible
+ * - Major versions must match exactly
+ *    - 1.x package cannot use global 2.x package
+ *    - 2.x package cannot use global 1.x package
+ * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API
+ *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects
+ *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3
+ * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor
+ * - Patch and build tag differences are not considered at this time
+ *
+ * @param version version of the API requesting an instance of the global API
+ */
+exports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);
+//# sourceMappingURL=semver.js.map
+
+/***/ }),
 /* 988 */,
 /* 989 */,
 /* 990 */,
@@ -50935,7 +53379,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(865);
 var uuid = __webpack_require__(585);
 var tough = __webpack_require__(393);
 var http = __webpack_require__(605);
@@ -50944,14 +53387,16 @@ var node_fetch = _interopDefault(__webpack_require__(454));
 var abortController = __webpack_require__(106);
 var FormData = _interopDefault(__webpack_require__(790));
 var util = __webpack_require__(669);
+var url = __webpack_require__(835);
 var stream = __webpack_require__(794);
-var tunnel = __webpack_require__(413);
-var coreAuth = __webpack_require__(229);
 var logger$1 = __webpack_require__(928);
+var tunnel = __webpack_require__(413);
+var tslib = __webpack_require__(865);
+var coreAuth = __webpack_require__(229);
 var xml2js = __webpack_require__(992);
 var os = __webpack_require__(87);
 var coreTracing = __webpack_require__(263);
-var api = __webpack_require__(440);
+__webpack_require__(71);
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -50962,31 +53407,31 @@ function getHeaderKey(headerName) {
     return headerName.toLowerCase();
 }
 function isHttpHeadersLike(object) {
-    if (!object || typeof object !== "object") {
-        return false;
-    }
-    if (typeof object.rawHeaders === "function" &&
-        typeof object.clone === "function" &&
-        typeof object.get === "function" &&
-        typeof object.set === "function" &&
-        typeof object.contains === "function" &&
-        typeof object.remove === "function" &&
-        typeof object.headersArray === "function" &&
-        typeof object.headerValues === "function" &&
-        typeof object.headerNames === "function" &&
-        typeof object.toJson === "function") {
-        return true;
+    if (object && typeof object === "object") {
+        const castObject = object;
+        if (typeof castObject.rawHeaders === "function" &&
+            typeof castObject.clone === "function" &&
+            typeof castObject.get === "function" &&
+            typeof castObject.set === "function" &&
+            typeof castObject.contains === "function" &&
+            typeof castObject.remove === "function" &&
+            typeof castObject.headersArray === "function" &&
+            typeof castObject.headerValues === "function" &&
+            typeof castObject.headerNames === "function" &&
+            typeof castObject.toJson === "function") {
+            return true;
+        }
     }
     return false;
 }
 /**
  * A collection of HTTP header key/value pairs.
  */
-var HttpHeaders = /** @class */ (function () {
-    function HttpHeaders(rawHeaders) {
+class HttpHeaders {
+    constructor(rawHeaders) {
         this._headersMap = {};
         if (rawHeaders) {
-            for (var headerName in rawHeaders) {
+            for (const headerName in rawHeaders) {
                 this.set(headerName, rawHeaders[headerName]);
             }
         }
@@ -50994,126 +53439,130 @@ var HttpHeaders = /** @class */ (function () {
     /**
      * Set a header in this collection with the provided name and value. The name is
      * case-insensitive.
-     * @param headerName The name of the header to set. This value is case-insensitive.
-     * @param headerValue The value of the header to set.
+     * @param headerName - The name of the header to set. This value is case-insensitive.
+     * @param headerValue - The value of the header to set.
      */
-    HttpHeaders.prototype.set = function (headerName, headerValue) {
+    set(headerName, headerValue) {
         this._headersMap[getHeaderKey(headerName)] = {
             name: headerName,
             value: headerValue.toString()
         };
-    };
+    }
     /**
      * Get the header value for the provided header name, or undefined if no header exists in this
      * collection with the provided name.
-     * @param headerName The name of the header.
+     * @param headerName - The name of the header.
      */
-    HttpHeaders.prototype.get = function (headerName) {
-        var header = this._headersMap[getHeaderKey(headerName)];
+    get(headerName) {
+        const header = this._headersMap[getHeaderKey(headerName)];
         return !header ? undefined : header.value;
-    };
+    }
     /**
      * Get whether or not this header collection contains a header entry for the provided header name.
      */
-    HttpHeaders.prototype.contains = function (headerName) {
+    contains(headerName) {
         return !!this._headersMap[getHeaderKey(headerName)];
-    };
+    }
     /**
      * Remove the header with the provided headerName. Return whether or not the header existed and
      * was removed.
-     * @param headerName The name of the header to remove.
+     * @param headerName - The name of the header to remove.
      */
-    HttpHeaders.prototype.remove = function (headerName) {
-        var result = this.contains(headerName);
+    remove(headerName) {
+        const result = this.contains(headerName);
         delete this._headersMap[getHeaderKey(headerName)];
         return result;
-    };
+    }
     /**
      * Get the headers that are contained this collection as an object.
      */
-    HttpHeaders.prototype.rawHeaders = function () {
-        var result = {};
-        for (var headerKey in this._headersMap) {
-            var header = this._headersMap[headerKey];
+    rawHeaders() {
+        const result = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
             result[header.name.toLowerCase()] = header.value;
         }
         return result;
-    };
+    }
     /**
      * Get the headers that are contained in this collection as an array.
      */
-    HttpHeaders.prototype.headersArray = function () {
-        var headers = [];
-        for (var headerKey in this._headersMap) {
+    headersArray() {
+        const headers = [];
+        for (const headerKey in this._headersMap) {
             headers.push(this._headersMap[headerKey]);
         }
         return headers;
-    };
+    }
     /**
      * Get the header names that are contained in this collection.
      */
-    HttpHeaders.prototype.headerNames = function () {
-        var headerNames = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerNames() {
+        const headerNames = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerNames.push(headers[i].name);
         }
         return headerNames;
-    };
+    }
     /**
      * Get the header values that are contained in this collection.
      */
-    HttpHeaders.prototype.headerValues = function () {
-        var headerValues = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerValues() {
+        const headerValues = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerValues.push(headers[i].value);
         }
         return headerValues;
-    };
+    }
     /**
      * Get the JSON object representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toJson = function () {
+    toJson() {
         return this.rawHeaders();
-    };
+    }
     /**
      * Get the string representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toString = function () {
+    toString() {
         return JSON.stringify(this.toJson());
-    };
+    }
     /**
      * Create a deep clone/copy of this HttpHeaders collection.
      */
-    HttpHeaders.prototype.clone = function () {
-        return new HttpHeaders(this.rawHeaders());
-    };
-    return HttpHeaders;
-}());
+    clone() {
+        const resultPreservingCasing = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
+            resultPreservingCasing[header.name] = header.value;
+        }
+        return new HttpHeaders(resultPreservingCasing);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Encodes a string in base64 format.
- * @param value the string to encode
+ * @param value - The string to encode
  */
 function encodeString(value) {
     return Buffer.from(value).toString("base64");
 }
 /**
  * Encodes a byte array in base64 format.
- * @param value the Uint8Aray to encode
+ * @param value - The Uint8Aray to encode
  */
 function encodeByteArray(value) {
     // Buffer.from accepts <ArrayBuffer> | <SharedArrayBuffer>-- the TypeScript definition is off here
     // https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
-    var bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
+    const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
     return bufferValue.toString("base64");
 }
 /**
  * Decodes a base64 string into a byte array.
- * @param value the base64 string to decode
+ * @param value - The base64 string to decode
  */
 function decodeString(value) {
     return Buffer.from(value, "base64");
@@ -51121,61 +53570,38 @@ function decodeString(value) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var Constants = {
+const Constants = {
     /**
      * The core-http version
-     * @const
-     * @type {string}
      */
-    coreHttpVersion: "1.1.9",
+    coreHttpVersion: "2.2.2",
     /**
      * Specifies HTTP.
-     *
-     * @const
-     * @type {string}
      */
     HTTP: "http:",
     /**
      * Specifies HTTPS.
-     *
-     * @const
-     * @type {string}
      */
     HTTPS: "https:",
     /**
      * Specifies HTTP Proxy.
-     *
-     * @const
-     * @type {string}
      */
     HTTP_PROXY: "HTTP_PROXY",
     /**
      * Specifies HTTPS Proxy.
-     *
-     * @const
-     * @type {string}
      */
     HTTPS_PROXY: "HTTPS_PROXY",
     /**
      * Specifies NO Proxy.
-     *
-     * @const
-     * @type {string}
      */
     NO_PROXY: "NO_PROXY",
     /**
      * Specifies ALL Proxy.
-     *
-     * @const
-     * @type {string}
      */
     ALL_PROXY: "ALL_PROXY",
     HttpConstants: {
         /**
          * Http Verbs
-         *
-         * @const
-         * @enum {string}
          */
         HttpVerbs: {
             PUT: "PUT",
@@ -51187,7 +53613,8 @@ var Constants = {
             PATCH: "PATCH"
         },
         StatusCodes: {
-            TooManyRequests: 429
+            TooManyRequests: 429,
+            ServiceUnavailable: 503
         }
     },
     /**
@@ -51196,9 +53623,6 @@ var Constants = {
     HeaderConstants: {
         /**
          * The Authorization header.
-         *
-         * @const
-         * @type {string}
          */
         AUTHORIZATION: "authorization",
         AUTHORIZATION_SCHEME: "Bearer",
@@ -51206,35 +53630,40 @@ var Constants = {
          * The Retry-After response-header field can be used with a 503 (Service
          * Unavailable) or 349 (Too Many Requests) responses to indicate how long
          * the service is expected to be unavailable to the requesting client.
-         *
-         * @const
-         * @type {string}
          */
         RETRY_AFTER: "Retry-After",
         /**
          * The UserAgent header.
-         *
-         * @const
-         * @type {string}
          */
         USER_AGENT: "User-Agent"
     }
 };
 
 // Copyright (c) Microsoft Corporation.
-var validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
+// Licensed under the MIT license.
+/**
+ * Default key used to access the XML attributes.
+ */
+const XML_ATTRKEY = "$";
+/**
+ * Default key used to access the XML value content.
+ */
+const XML_CHARKEY = "_";
+
+// Copyright (c) Microsoft Corporation.
+const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
 /**
  * A constant that indicates whether the environment is node.js or browser based.
  */
-var isNode = typeof process !== "undefined" &&
+const isNode = typeof process !== "undefined" &&
     !!process.version &&
     !!process.versions &&
     !!process.versions.node;
 /**
  * Encodes an URI.
  *
- * @param {string} uri The URI to be encoded.
- * @return {string} The encoded URI.
+ * @param uri - The URI to be encoded.
+ * @returns The encoded URI.
  */
 function encodeUri(uri) {
     return encodeURIComponent(uri)
@@ -51248,12 +53677,11 @@ function encodeUri(uri) {
  * Returns a stripped version of the Http Response which only contains body,
  * headers and the status.
  *
- * @param {HttpOperationResponse} response The Http Response
- *
- * @return {object} The stripped version of Http Response.
+ * @param response - The Http Response
+ * @returns The stripped version of Http Response.
  */
 function stripResponse(response) {
-    var strippedResponse = {};
+    const strippedResponse = {};
     strippedResponse.body = response.bodyAsText;
     strippedResponse.headers = response.headers;
     strippedResponse.status = response.status;
@@ -51263,12 +53691,11 @@ function stripResponse(response) {
  * Returns a stripped version of the Http Request that does not contain the
  * Authorization header.
  *
- * @param {WebResourceLike} request The Http Request object
- *
- * @return {WebResourceLike} The stripped version of Http Request.
+ * @param request - The Http Request object
+ * @returns The stripped version of Http Request.
  */
 function stripRequest(request) {
-    var strippedRequest = request.clone();
+    const strippedRequest = request.clone();
     if (strippedRequest.headers) {
         strippedRequest.headers.remove("authorization");
     }
@@ -51277,9 +53704,8 @@ function stripRequest(request) {
 /**
  * Validates the given uuid as a string
  *
- * @param {string} uuid The uuid as a string that needs to be validated
- *
- * @return {boolean} True if the uuid is valid; false otherwise.
+ * @param uuid - The uuid as a string that needs to be validated
+ * @returns True if the uuid is valid; false otherwise.
  */
 function isValidUuid(uuid) {
     return validUuidRegex.test(uuid);
@@ -51287,7 +53713,7 @@ function isValidUuid(uuid) {
 /**
  * Generated UUID
  *
- * @return {string} RFC4122 v4 UUID.
+ * @returns RFC4122 v4 UUID.
  */
 function generateUuid() {
     return uuid.v4();
@@ -51296,46 +53722,37 @@ function generateUuid() {
  * Executes an array of promises sequentially. Inspiration of this method is here:
  * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!
  *
- * @param {Array} promiseFactories An array of promise factories(A function that return a promise)
- *
- * @param {any} [kickstart] Input to the first promise that is used to kickstart the promise chain.
+ * @param promiseFactories - An array of promise factories(A function that return a promise)
+ * @param kickstart - Input to the first promise that is used to kickstart the promise chain.
  * If not provided then the promise chain starts with undefined.
- *
- * @return A chain of resolved or rejected promises
+ * @returns A chain of resolved or rejected promises
  */
 function executePromisesSequentially(promiseFactories, kickstart) {
-    var result = Promise.resolve(kickstart);
-    promiseFactories.forEach(function (promiseFactory) {
+    let result = Promise.resolve(kickstart);
+    promiseFactories.forEach((promiseFactory) => {
         result = result.then(promiseFactory);
     });
     return result;
 }
-/**
- * A wrapper for setTimeout that resolves a promise after t milliseconds.
- * @param {number} t The number of milliseconds to be delayed.
- * @param {T} value The value to be resolved with after a timeout of t milliseconds.
- * @returns {Promise<T>} Resolved promise
- */
-function delay(t, value) {
-    return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });
-}
 /**
  * Converts a Promise to a callback.
- * @param {Promise<any>} promise The Promise to be converted to a callback
- * @returns {Function} A function that takes the callback (cb: Function): void
+ * @param promise - The Promise to be converted to a callback
+ * @returns A function that takes the callback `(cb: Function) => void`
  * @deprecated generated code should instead depend on responseToBody
  */
+// eslint-disable-next-line @typescript-eslint/ban-types
 function promiseToCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    // eslint-disable-next-line @typescript-eslint/ban-types
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             return cb(undefined, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             cb(err);
         });
@@ -51343,60 +53760,62 @@ function promiseToCallback(promise) {
 }
 /**
  * Converts a Promise to a service callback.
- * @param {Promise<HttpOperationResponse>} promise - The Promise of HttpOperationResponse to be converted to a service callback
- * @returns {Function} A function that takes the service callback (cb: ServiceCallback<T>): void
+ * @param promise - The Promise of HttpOperationResponse to be converted to a service callback
+ * @returns A function that takes the service callback (cb: ServiceCallback<T>): void
  */
 function promiseToServiceCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             return process.nextTick(cb, undefined, data.parsedBody, data.request, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             process.nextTick(cb, err);
         });
     };
 }
 function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
-    var _a, _b, _c;
     if (!Array.isArray(obj)) {
         obj = [obj];
     }
     if (!xmlNamespaceKey || !xmlNamespace) {
-        return _a = {}, _a[elementName] = obj, _a;
+        return { [elementName]: obj };
     }
-    return _b = {}, _b[elementName] = obj, _b.$ = (_c = {}, _c[xmlNamespaceKey] = xmlNamespace, _c), _b;
+    const result = { [elementName]: obj };
+    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
+    return result;
 }
 /**
  * Applies the properties on the prototype of sourceCtors to the prototype of targetCtor
- * @param {object} targetCtor The target object on which the properties need to be applied.
- * @param {Array<object>} sourceCtors An array of source objects from which the properties need to be taken.
+ * @param targetCtor - The target object on which the properties need to be applied.
+ * @param sourceCtors - An array of source objects from which the properties need to be taken.
  */
-function applyMixins(targetCtor, sourceCtors) {
-    sourceCtors.forEach(function (sourceCtors) {
-        Object.getOwnPropertyNames(sourceCtors.prototype).forEach(function (name) {
-            targetCtor.prototype[name] = sourceCtors.prototype[name];
+function applyMixins(targetCtorParam, sourceCtors) {
+    const castTargetCtorParam = targetCtorParam;
+    sourceCtors.forEach((sourceCtor) => {
+        Object.getOwnPropertyNames(sourceCtor.prototype).forEach((name) => {
+            castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];
         });
     });
 }
-var validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
 /**
  * Indicates whether the given string is in ISO 8601 format.
- * @param {string} value The value to be validated for ISO 8601 duration format.
- * @return {boolean} `true` if valid, `false` otherwise.
+ * @param value - The value to be validated for ISO 8601 duration format.
+ * @returns `true` if valid, `false` otherwise.
  */
 function isDuration(value) {
     return validateISODuration.test(value);
 }
 /**
  * Replace all of the instances of searchValue in value with the provided replaceValue.
- * @param {string | undefined} value The value to search and replace in.
- * @param {string} searchValue The value to search for in the value argument.
- * @param {string} replaceValue The value to replace searchValue with in the value argument.
- * @returns {string | undefined} The value where each instance of searchValue was replaced with replacedValue.
+ * @param value - The value to search and replace in.
+ * @param searchValue - The value to search for in the value argument.
+ * @param replaceValue - The value to replace searchValue with in the value argument.
+ * @returns The value where each instance of searchValue was replaced with replacedValue.
  */
 function replaceAll(value, searchValue, replaceValue) {
     return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || "");
@@ -51404,8 +53823,8 @@ function replaceAll(value, searchValue, replaceValue) {
 /**
  * Determines whether the given entity is a basic/primitive type
  * (string, number, boolean, null, undefined).
- * @param {any} value Any entity
- * @return {boolean} - true is it is primitive type, false otherwise.
+ * @param value - Any entity
+ * @returns true is it is primitive type, false otherwise.
  */
 function isPrimitiveType(value) {
     return (typeof value !== "object" && typeof value !== "function") || value === null;
@@ -51419,73 +53838,89 @@ function getEnvironmentValue(name) {
     }
     return undefined;
 }
+/**
+ * @internal
+ * @returns true when input is an object type that is not null, Array, RegExp, or Date.
+ */
+function isObject(input) {
+    return (typeof input === "object" &&
+        input !== null &&
+        !Array.isArray(input) &&
+        !(input instanceof RegExp) &&
+        !(input instanceof Date));
+}
 
 // Copyright (c) Microsoft Corporation.
-var Serializer = /** @class */ (function () {
-    function Serializer(modelMappers, isXML) {
-        if (modelMappers === void 0) { modelMappers = {}; }
+class Serializer {
+    constructor(modelMappers = {}, isXML) {
         this.modelMappers = modelMappers;
         this.isXML = isXML;
     }
-    Serializer.prototype.validateConstraints = function (mapper, value, objectName) {
-        var failValidation = function (constraintName, constraintValue) {
-            throw new Error("\"" + objectName + "\" with value \"" + value + "\" should satisfy the constraint \"" + constraintName + "\": " + constraintValue + ".");
+    validateConstraints(mapper, value, objectName) {
+        const failValidation = (constraintName, constraintValue) => {
+            throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`);
         };
         if (mapper.constraints && value != undefined) {
-            var _a = mapper.constraints, ExclusiveMaximum = _a.ExclusiveMaximum, ExclusiveMinimum = _a.ExclusiveMinimum, InclusiveMaximum = _a.InclusiveMaximum, InclusiveMinimum = _a.InclusiveMinimum, MaxItems = _a.MaxItems, MaxLength = _a.MaxLength, MinItems = _a.MinItems, MinLength = _a.MinLength, MultipleOf = _a.MultipleOf, Pattern = _a.Pattern, UniqueItems = _a.UniqueItems;
-            if (ExclusiveMaximum != undefined && value >= ExclusiveMaximum) {
+            const valueAsNumber = value;
+            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems } = mapper.constraints;
+            if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {
                 failValidation("ExclusiveMaximum", ExclusiveMaximum);
             }
-            if (ExclusiveMinimum != undefined && value <= ExclusiveMinimum) {
+            if (ExclusiveMinimum != undefined && valueAsNumber <= ExclusiveMinimum) {
                 failValidation("ExclusiveMinimum", ExclusiveMinimum);
             }
-            if (InclusiveMaximum != undefined && value > InclusiveMaximum) {
+            if (InclusiveMaximum != undefined && valueAsNumber > InclusiveMaximum) {
                 failValidation("InclusiveMaximum", InclusiveMaximum);
             }
-            if (InclusiveMinimum != undefined && value < InclusiveMinimum) {
+            if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {
                 failValidation("InclusiveMinimum", InclusiveMinimum);
             }
-            if (MaxItems != undefined && value.length > MaxItems) {
+            const valueAsArray = value;
+            if (MaxItems != undefined && valueAsArray.length > MaxItems) {
                 failValidation("MaxItems", MaxItems);
             }
-            if (MaxLength != undefined && value.length > MaxLength) {
+            if (MaxLength != undefined && valueAsArray.length > MaxLength) {
                 failValidation("MaxLength", MaxLength);
             }
-            if (MinItems != undefined && value.length < MinItems) {
+            if (MinItems != undefined && valueAsArray.length < MinItems) {
                 failValidation("MinItems", MinItems);
             }
-            if (MinLength != undefined && value.length < MinLength) {
+            if (MinLength != undefined && valueAsArray.length < MinLength) {
                 failValidation("MinLength", MinLength);
             }
-            if (MultipleOf != undefined && value % MultipleOf !== 0) {
+            if (MultipleOf != undefined && valueAsNumber % MultipleOf !== 0) {
                 failValidation("MultipleOf", MultipleOf);
             }
             if (Pattern) {
-                var pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
+                const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
                 if (typeof value !== "string" || value.match(pattern) === null) {
                     failValidation("Pattern", Pattern);
                 }
             }
             if (UniqueItems &&
-                value.some(function (item, i, ar) { return ar.indexOf(item) !== i; })) {
+                valueAsArray.some((item, i, ar) => ar.indexOf(item) !== i)) {
                 failValidation("UniqueItems", UniqueItems);
             }
         }
-    };
+    }
     /**
      * Serialize the given object based on its metadata defined in the mapper
      *
-     * @param {Mapper} mapper The mapper which defines the metadata of the serializable object
-     *
-     * @param {object|string|Array|number|boolean|Date|stream} object A valid Javascript object to be serialized
-     *
-     * @param {string} objectName Name of the serialized object
-     *
-     * @returns {object|string|Array|number|boolean|Date|stream} A valid serialized Javascript object
+     * @param mapper - The mapper which defines the metadata of the serializable object
+     * @param object - A valid Javascript object to be serialized
+     * @param objectName - Name of the serialized object
+     * @param options - additional options to deserialization
+     * @returns A valid serialized Javascript object
      */
-    Serializer.prototype.serialize = function (mapper, object, objectName) {
-        var payload = {};
-        var mapperType = mapper.type.name;
+    serialize(mapper, object, objectName, options = {}) {
+        var _a, _b, _c;
+        const updatedOptions = {
+            rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+            includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+            xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+        };
+        let payload = {};
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -51504,15 +53939,15 @@ var Serializer = /** @class */ (function () {
         //      true || null      | undefined/null
         //     false || X         | undefined
         // undefined || X         | undefined/null
-        var required = mapper.required, nullable = mapper.nullable;
+        const { required, nullable } = mapper;
         if (required && nullable && object === undefined) {
-            throw new Error(objectName + " cannot be undefined.");
+            throw new Error(`${objectName} cannot be undefined.`);
         }
         if (required && !nullable && object == undefined) {
-            throw new Error(objectName + " cannot be null or undefined.");
+            throw new Error(`${objectName} cannot be null or undefined.`);
         }
         if (!required && nullable === false && object === null) {
-            throw new Error(objectName + " cannot be null.");
+            throw new Error(`${objectName} cannot be null.`);
         }
         if (object == undefined) {
             payload = object;
@@ -51527,7 +53962,7 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBasicTypes(mapperType, objectName, object);
             }
             else if (mapperType.match(/^Enum$/i) !== null) {
-                var enumMapper = mapper;
+                const enumMapper = mapper;
                 payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);
             }
             else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {
@@ -51540,29 +53975,33 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBase64UrlType(objectName, object);
             }
             else if (mapperType.match(/^Sequence$/i) !== null) {
-                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
             else if (mapperType.match(/^Dictionary$/i) !== null) {
-                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
             else if (mapperType.match(/^Composite$/i) !== null) {
-                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML));
+                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);
             }
         }
         return payload;
-    };
+    }
     /**
      * Deserialize the given object based on its metadata defined in the mapper
      *
-     * @param {object} mapper The mapper which defines the metadata of the serializable object
-     *
-     * @param {object|string|Array|number|boolean|Date|stream} responseBody A valid Javascript entity to be deserialized
-     *
-     * @param {string} objectName Name of the deserialized object
-     *
-     * @returns {object|string|Array|number|boolean|Date|stream} A valid deserialized Javascript object
+     * @param mapper - The mapper which defines the metadata of the serializable object
+     * @param responseBody - A valid Javascript entity to be deserialized
+     * @param objectName - Name of the deserialized object
+     * @param options - Controls behavior of XML parser and builder.
+     * @returns A valid deserialized Javascript object
      */
-    Serializer.prototype.deserialize = function (mapper, responseBody, objectName) {
+    deserialize(mapper, responseBody, objectName, options = {}) {
+        var _a, _b, _c;
+        const updatedOptions = {
+            rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+            includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+            xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+        };
         if (responseBody == undefined) {
             if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) {
                 // Edge case for empty XML non-wrapped lists. xml2js can't distinguish
@@ -51576,23 +54015,26 @@ var Serializer = /** @class */ (function () {
             }
             return responseBody;
         }
-        var payload;
-        var mapperType = mapper.type.name;
+        let payload;
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
         if (mapperType.match(/^Composite$/i) !== null) {
-            payload = deserializeCompositeType(this, mapper, responseBody, objectName);
+            payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);
         }
         else {
             if (this.isXML) {
+                const xmlCharKey = updatedOptions.xmlCharKey;
+                const castResponseBody = responseBody;
                 /**
                  * If the mapper specifies this as a non-composite type value but the responseBody contains
-                 * both header ("$") and body ("_") properties, then just reduce the responseBody value to
-                 * the body ("_") property.
+                 * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties,
+                 * then just reduce the responseBody value to the body ("#" i.e., XML_CHARKEY) property.
                  */
-                if (responseBody["$"] != undefined && responseBody["_"] != undefined) {
-                    responseBody = responseBody["_"];
+                if (castResponseBody[XML_ATTRKEY] != undefined &&
+                    castResponseBody[xmlCharKey] != undefined) {
+                    responseBody = castResponseBody[xmlCharKey];
                 }
             }
             if (mapperType.match(/^Number$/i) !== null) {
@@ -51628,21 +54070,20 @@ var Serializer = /** @class */ (function () {
                 payload = base64UrlToByteArray(responseBody);
             }
             else if (mapperType.match(/^Sequence$/i) !== null) {
-                payload = deserializeSequenceType(this, mapper, responseBody, objectName);
+                payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);
             }
             else if (mapperType.match(/^Dictionary$/i) !== null) {
-                payload = deserializeDictionaryType(this, mapper, responseBody, objectName);
+                payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);
             }
         }
         if (mapper.isConstant) {
             payload = mapper.defaultValue;
         }
         return payload;
-    };
-    return Serializer;
-}());
+    }
+}
 function trimEnd(str, ch) {
-    var len = str.length;
+    let len = str.length;
     while (len - 1 >= 0 && str[len - 1] === ch) {
         --len;
     }
@@ -51653,10 +54094,10 @@ function bufferToBase64Url(buffer) {
         return undefined;
     }
     if (!(buffer instanceof Uint8Array)) {
-        throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");
+        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);
     }
     // Uint8Array to Base64.
-    var str = encodeByteArray(buffer);
+    const str = encodeByteArray(buffer);
     // Base64 to Base64Url.
     return trimEnd(str, "=")
         .replace(/\+/g, "-")
@@ -51675,12 +54116,11 @@ function base64UrlToByteArray(str) {
     return decodeString(str);
 }
 function splitSerializeName(prop) {
-    var classes = [];
-    var partialclass = "";
+    const classes = [];
+    let partialclass = "";
     if (prop) {
-        var subwords = prop.split(".");
-        for (var _i = 0, subwords_1 = subwords; _i < subwords_1.length; _i++) {
-            var item = subwords_1[_i];
+        const subwords = prop.split(".");
+        for (const item of subwords) {
             if (item.charAt(item.length - 1) === "\\") {
                 partialclass += item.substr(0, item.length - 1) + ".";
             }
@@ -51712,32 +54152,32 @@ function serializeBasicTypes(typeName, objectName, value) {
     if (value !== null && value !== undefined) {
         if (typeName.match(/^Number$/i) !== null) {
             if (typeof value !== "number") {
-                throw new Error(objectName + " with value " + value + " must be of type number.");
+                throw new Error(`${objectName} with value ${value} must be of type number.`);
             }
         }
         else if (typeName.match(/^String$/i) !== null) {
             if (typeof value.valueOf() !== "string") {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string.");
+                throw new Error(`${objectName} with value "${value}" must be of type string.`);
             }
         }
         else if (typeName.match(/^Uuid$/i) !== null) {
             if (!(typeof value.valueOf() === "string" && isValidUuid(value))) {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string and a valid uuid.");
+                throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`);
             }
         }
         else if (typeName.match(/^Boolean$/i) !== null) {
             if (typeof value !== "boolean") {
-                throw new Error(objectName + " with value " + value + " must be of type boolean.");
+                throw new Error(`${objectName} with value ${value} must be of type boolean.`);
             }
         }
         else if (typeName.match(/^Stream$/i) !== null) {
-            var objectType = typeof value;
+            const objectType = typeof value;
             if (objectType !== "string" &&
                 objectType !== "function" &&
                 !(value instanceof ArrayBuffer) &&
                 !ArrayBuffer.isView(value) &&
-                !(typeof Blob === "function" && value instanceof Blob)) {
-                throw new Error(objectName + " must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.");
+                !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob)) {
+                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.`);
             }
         }
     }
@@ -51745,34 +54185,34 @@ function serializeBasicTypes(typeName, objectName, value) {
 }
 function serializeEnumType(objectName, allowedValues, value) {
     if (!allowedValues) {
-        throw new Error("Please provide a set of allowedValues to validate " + objectName + " as an Enum Type.");
+        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);
     }
-    var isPresent = allowedValues.some(function (item) {
+    const isPresent = allowedValues.some((item) => {
         if (typeof item.valueOf() === "string") {
             return item.toLowerCase() === value.toLowerCase();
         }
         return item === value;
     });
     if (!isPresent) {
-        throw new Error(value + " is not a valid value for " + objectName + ". The valid values are: " + JSON.stringify(allowedValues) + ".");
+        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);
     }
     return value;
 }
 function serializeByteArrayType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = encodeByteArray(value);
     }
     return returnValue;
 }
 function serializeBase64UrlType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = bufferToBase64Url(value) || "";
     }
@@ -51783,7 +54223,7 @@ function serializeDateTypes(typeName, value, objectName) {
         if (typeName.match(/^Date$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value =
                 value instanceof Date
@@ -51793,55 +54233,57 @@ function serializeDateTypes(typeName, value, objectName) {
         else if (typeName.match(/^DateTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();
         }
         else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);
             }
             value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();
         }
         else if (typeName.match(/^UnixTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123/ISO8601 format " +
-                    "for it to be serialized in UnixTime/Epoch format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +
+                    `for it to be serialized in UnixTime/Epoch format.`);
             }
             value = dateToUnixTime(value);
         }
         else if (typeName.match(/^TimeSpan$/i) !== null) {
             if (!isDuration(value)) {
-                throw new Error(objectName + " must be a string in ISO 8601 format. Instead was \"" + value + "\".");
+                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`);
             }
         }
     }
     return value;
 }
-function serializeSequenceType(serializer, mapper, object, objectName, isXml) {
-    var _a, _b;
+function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
     if (!Array.isArray(object)) {
-        throw new Error(objectName + " must be of type Array.");
+        throw new Error(`${objectName} must be of type Array.`);
     }
-    var elementType = mapper.type.element;
+    const elementType = mapper.type.element;
     if (!elementType || typeof elementType !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempArray = [];
-    for (var i = 0; i < object.length; i++) {
-        var serializedValue = serializer.serialize(elementType, object[i], objectName);
+    const tempArray = [];
+    for (let i = 0; i < object.length; i++) {
+        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);
         if (isXml && elementType.xmlNamespace) {
-            var xmlnsKey = elementType.xmlNamespacePrefix
-                ? "xmlns:" + elementType.xmlNamespacePrefix
+            const xmlnsKey = elementType.xmlNamespacePrefix
+                ? `xmlns:${elementType.xmlNamespacePrefix}`
                 : "xmlns";
             if (elementType.type.name === "Composite") {
-                tempArray[i] = tslib.__assign(tslib.__assign({}, serializedValue), { $: (_a = {}, _a[xmlnsKey] = elementType.xmlNamespace, _a) });
+                tempArray[i] = Object.assign({}, serializedValue);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
             else {
-                tempArray[i] = { _: serializedValue, $: (_b = {}, _b[xmlnsKey] = elementType.xmlNamespace, _b) };
+                tempArray[i] = {};
+                tempArray[i][options.xmlCharKey] = serializedValue;
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
         }
         else {
@@ -51850,93 +54292,91 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml) {
     }
     return tempArray;
 }
-function serializeDictionaryType(serializer, mapper, object, objectName, isXml) {
-    var _a;
+function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {
     if (typeof object !== "object") {
-        throw new Error(objectName + " must be of type object.");
+        throw new Error(`${objectName} must be of type object.`);
     }
-    var valueType = mapper.type.value;
+    const valueType = mapper.type.value;
     if (!valueType || typeof valueType !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempDictionary = {};
-    for (var _i = 0, _b = Object.keys(object); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var serializedValue = serializer.serialize(valueType, object[key], objectName);
+    const tempDictionary = {};
+    for (const key of Object.keys(object)) {
+        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);
         // If the element needs an XML namespace we need to add it within the $ property
-        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml);
+        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);
     }
     // Add the namespace to the root element if needed
     if (isXml && mapper.xmlNamespace) {
-        var xmlnsKey = mapper.xmlNamespacePrefix ? "xmlns:" + mapper.xmlNamespacePrefix : "xmlns";
-        return tslib.__assign(tslib.__assign({}, tempDictionary), { $: (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a) });
+        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns";
+        const result = tempDictionary;
+        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };
+        return result;
     }
     return tempDictionary;
 }
 /**
  * Resolves the additionalProperties property from a referenced mapper
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
- * @param objectName name of the object being serialized
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
+ * @param objectName - Name of the object being serialized
  */
 function resolveAdditionalProperties(serializer, mapper, objectName) {
-    var additionalProperties = mapper.type.additionalProperties;
+    const additionalProperties = mapper.type.additionalProperties;
     if (!additionalProperties && mapper.type.className) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;
     }
     return additionalProperties;
 }
 /**
  * Finds the mapper referenced by className
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
- * @param objectName name of the object being serialized
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
+ * @param objectName - Name of the object being serialized
  */
 function resolveReferencedMapper(serializer, mapper, objectName) {
-    var className = mapper.type.className;
+    const className = mapper.type.className;
     if (!className) {
-        throw new Error("Class name for model \"" + objectName + "\" is not provided in the mapper \"" + JSON.stringify(mapper, undefined, 2) + "\".");
+        throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`);
     }
     return serializer.modelMappers[className];
 }
 /**
  * Resolves a composite mapper's modelProperties.
- * @param serializer the serializer containing the entire set of mappers
- * @param mapper the composite mapper to resolve
+ * @param serializer - The serializer containing the entire set of mappers
+ * @param mapper - The composite mapper to resolve
  */
 function resolveModelProperties(serializer, mapper, objectName) {
-    var modelProps = mapper.type.modelProperties;
+    let modelProps = mapper.type.modelProperties;
     if (!modelProps) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         if (!modelMapper) {
-            throw new Error("mapper() cannot be null or undefined for model \"" + mapper.type.className + "\".");
+            throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`);
         }
         modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;
         if (!modelProps) {
-            throw new Error("modelProperties cannot be null or undefined in the " +
-                ("mapper \"" + JSON.stringify(modelMapper) + "\" of type \"" + mapper.type.className + "\" for object \"" + objectName + "\"."));
+            throw new Error(`modelProperties cannot be null or undefined in the ` +
+                `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`);
         }
     }
     return modelProps;
 }
-function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
-    var _a, _b;
+function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, object, "clientName");
     }
     if (object != undefined) {
-        var payload = {};
-        var modelProps = resolveModelProperties(serializer, mapper, objectName);
-        for (var _i = 0, _c = Object.keys(modelProps); _i < _c.length; _i++) {
-            var key = _c[_i];
-            var propertyMapper = modelProps[key];
+        const payload = {};
+        const modelProps = resolveModelProperties(serializer, mapper, objectName);
+        for (const key of Object.keys(modelProps)) {
+            const propertyMapper = modelProps[key];
             if (propertyMapper.readOnly) {
                 continue;
             }
-            var propName = void 0;
-            var parentObject = payload;
+            let propName;
+            let parentObject = payload;
             if (serializer.isXML) {
                 if (propertyMapper.xmlIsWrapped) {
                     propName = propertyMapper.xmlName;
@@ -51946,11 +54386,10 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
                 }
             }
             else {
-                var paths = splitSerializeName(propertyMapper.serializedName);
+                const paths = splitSerializeName(propertyMapper.serializedName);
                 propName = paths.pop();
-                for (var _d = 0, paths_1 = paths; _d < paths_1.length; _d++) {
-                    var pathName = paths_1[_d];
-                    var childObject = parentObject[pathName];
+                for (const pathName of paths) {
+                    const childObject = parentObject[pathName];
                     if (childObject == undefined &&
                         (object[key] != undefined || propertyMapper.defaultValue !== undefined)) {
                         parentObject[pathName] = {};
@@ -51960,33 +54399,33 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
             }
             if (parentObject != undefined) {
                 if (isXml && mapper.xmlNamespace) {
-                    var xmlnsKey = mapper.xmlNamespacePrefix
-                        ? "xmlns:" + mapper.xmlNamespacePrefix
+                    const xmlnsKey = mapper.xmlNamespacePrefix
+                        ? `xmlns:${mapper.xmlNamespacePrefix}`
                         : "xmlns";
-                    parentObject.$ = tslib.__assign(tslib.__assign({}, parentObject.$), (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a));
+                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });
                 }
-                var propertyObjectName = propertyMapper.serializedName !== ""
+                const propertyObjectName = propertyMapper.serializedName !== ""
                     ? objectName + "." + propertyMapper.serializedName
                     : objectName;
-                var toSerialize = object[key];
-                var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+                let toSerialize = object[key];
+                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
                 if (polymorphicDiscriminator &&
                     polymorphicDiscriminator.clientName === key &&
                     toSerialize == undefined) {
                     toSerialize = mapper.serializedName;
                 }
-                var serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName);
+                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
                 if (serializedValue !== undefined && propName != undefined) {
-                    var value = getXmlObjectValue(propertyMapper, serializedValue, isXml);
+                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
                     if (isXml && propertyMapper.xmlIsAttribute) {
-                        // $ is the key attributes are kept under in xml2js.
+                        // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.
                         // This keeps things simple while preventing name collision
                         // with names in user documents.
-                        parentObject.$ = parentObject.$ || {};
-                        parentObject.$[propName] = serializedValue;
+                        parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};
+                        parentObject[XML_ATTRKEY][propName] = serializedValue;
                     }
                     else if (isXml && propertyMapper.xmlIsWrapped) {
-                        parentObject[propName] = (_b = {}, _b[propertyMapper.xmlElementName] = value, _b);
+                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };
                     }
                     else {
                         parentObject[propName] = value;
@@ -51994,76 +54433,80 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml) {
                 }
             }
         }
-        var additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
+        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
         if (additionalPropertiesMapper) {
-            var propNames = Object.keys(modelProps);
-            var _loop_1 = function (clientPropName) {
-                var isAdditionalProperty = propNames.every(function (pn) { return pn !== clientPropName; });
+            const propNames = Object.keys(modelProps);
+            for (const clientPropName in object) {
+                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);
                 if (isAdditionalProperty) {
-                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]');
+                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options);
                 }
-            };
-            for (var clientPropName in object) {
-                _loop_1(clientPropName);
             }
         }
         return payload;
     }
     return object;
 }
-function getXmlObjectValue(propertyMapper, serializedValue, isXml) {
-    var _a;
+function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
     if (!isXml || !propertyMapper.xmlNamespace) {
         return serializedValue;
     }
-    var xmlnsKey = propertyMapper.xmlNamespacePrefix
-        ? "xmlns:" + propertyMapper.xmlNamespacePrefix
+    const xmlnsKey = propertyMapper.xmlNamespacePrefix
+        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`
         : "xmlns";
-    var xmlNamespace = (_a = {}, _a[xmlnsKey] = propertyMapper.xmlNamespace, _a);
+    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };
     if (["Composite"].includes(propertyMapper.type.name)) {
-        return tslib.__assign({ $: xmlNamespace }, serializedValue);
+        if (serializedValue[XML_ATTRKEY]) {
+            return serializedValue;
+        }
+        else {
+            const result = Object.assign({}, serializedValue);
+            result[XML_ATTRKEY] = xmlNamespace;
+            return result;
+        }
     }
-    return { _: serializedValue, $: xmlNamespace };
+    const result = {};
+    result[options.xmlCharKey] = serializedValue;
+    result[XML_ATTRKEY] = xmlNamespace;
+    return result;
 }
-function isSpecialXmlProperty(propertyName) {
-    return ["$", "_"].includes(propertyName);
+function isSpecialXmlProperty(propertyName, options) {
+    return [XML_ATTRKEY, options.xmlCharKey].includes(propertyName);
 }
-function deserializeCompositeType(serializer, mapper, responseBody, objectName) {
+function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {
     var _a;
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
     }
-    var modelProps = resolveModelProperties(serializer, mapper, objectName);
-    var instance = {};
-    var handledPropertyNames = [];
-    for (var _i = 0, _b = Object.keys(modelProps); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var propertyMapper = modelProps[key];
-        var paths = splitSerializeName(modelProps[key].serializedName);
+    const modelProps = resolveModelProperties(serializer, mapper, objectName);
+    let instance = {};
+    const handledPropertyNames = [];
+    for (const key of Object.keys(modelProps)) {
+        const propertyMapper = modelProps[key];
+        const paths = splitSerializeName(modelProps[key].serializedName);
         handledPropertyNames.push(paths[0]);
-        var serializedName = propertyMapper.serializedName, xmlName = propertyMapper.xmlName, xmlElementName = propertyMapper.xmlElementName;
-        var propertyObjectName = objectName;
+        const { serializedName, xmlName, xmlElementName } = propertyMapper;
+        let propertyObjectName = objectName;
         if (serializedName !== "" && serializedName !== undefined) {
             propertyObjectName = objectName + "." + serializedName;
         }
-        var headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
+        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
         if (headerCollectionPrefix) {
-            var dictionary = {};
-            for (var _c = 0, _d = Object.keys(responseBody); _c < _d.length; _c++) {
-                var headerKey = _d[_c];
+            const dictionary = {};
+            for (const headerKey of Object.keys(responseBody)) {
                 if (headerKey.startsWith(headerCollectionPrefix)) {
-                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName);
+                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);
                 }
                 handledPropertyNames.push(headerKey);
             }
             instance[key] = dictionary;
         }
         else if (serializer.isXML) {
-            if (propertyMapper.xmlIsAttribute && responseBody.$) {
-                instance[key] = serializer.deserialize(propertyMapper, responseBody.$[xmlName], propertyObjectName);
+            if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {
+                instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);
             }
             else {
-                var propertyName = xmlElementName || xmlName || serializedName;
+                const propertyName = xmlElementName || xmlName || serializedName;
                 if (propertyMapper.xmlIsWrapped) {
                     /* a list of <xmlElementName> wrapped by <xmlName>
                       For the xml example below
@@ -52079,29 +54522,28 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName)
                         }
                       xmlName is "Cors" and xmlElementName is"CorsRule".
                     */
-                    var wrapped = responseBody[xmlName];
-                    var elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
-                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName);
+                    const wrapped = responseBody[xmlName];
+                    const elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
+                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
                 }
                 else {
-                    var property = responseBody[propertyName];
-                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName);
+                    const property = responseBody[propertyName];
+                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);
                 }
             }
         }
         else {
             // deserialize the property if it is present in the provided responseBody instance
-            var propertyInstance = void 0;
-            var res = responseBody;
+            let propertyInstance;
+            let res = responseBody;
             // traversing the object step by step.
-            for (var _e = 0, paths_2 = paths; _e < paths_2.length; _e++) {
-                var item = paths_2[_e];
+            for (const item of paths) {
                 if (!res)
                     break;
                 res = res[item];
             }
             propertyInstance = res;
-            var polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
+            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
             // checking that the model property name (key)(ex: "fishtype") and the
             // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype")
             // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type")
@@ -52116,94 +54558,100 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName)
                 propertyInstance == undefined) {
                 propertyInstance = mapper.serializedName;
             }
-            var serializedValue = void 0;
+            let serializedValue;
             // paging
             if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") {
                 propertyInstance = responseBody[key];
-                instance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName);
+                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
+                // Copy over any properties that have already been added into the instance, where they do
+                // not exist on the newly de-serialized array
+                for (const [k, v] of Object.entries(instance)) {
+                    if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {
+                        arrayInstance[k] = v;
+                    }
+                }
+                instance = arrayInstance;
             }
             else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {
-                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName);
+                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
                 instance[key] = serializedValue;
             }
         }
     }
-    var additionalPropertiesMapper = mapper.type.additionalProperties;
+    const additionalPropertiesMapper = mapper.type.additionalProperties;
     if (additionalPropertiesMapper) {
-        var isAdditionalProperty = function (responsePropName) {
-            for (var clientPropName in modelProps) {
-                var paths = splitSerializeName(modelProps[clientPropName].serializedName);
+        const isAdditionalProperty = (responsePropName) => {
+            for (const clientPropName in modelProps) {
+                const paths = splitSerializeName(modelProps[clientPropName].serializedName);
                 if (paths[0] === responsePropName) {
                     return false;
                 }
             }
             return true;
         };
-        for (var responsePropName in responseBody) {
+        for (const responsePropName in responseBody) {
             if (isAdditionalProperty(responsePropName)) {
-                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]');
+                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options);
             }
         }
     }
     else if (responseBody) {
-        for (var _f = 0, _g = Object.keys(responseBody); _f < _g.length; _f++) {
-            var key = _g[_f];
+        for (const key of Object.keys(responseBody)) {
             if (instance[key] === undefined &&
                 !handledPropertyNames.includes(key) &&
-                !isSpecialXmlProperty(key)) {
+                !isSpecialXmlProperty(key, options)) {
                 instance[key] = responseBody[key];
             }
         }
     }
     return instance;
 }
-function deserializeDictionaryType(serializer, mapper, responseBody, objectName) {
-    var value = mapper.type.value;
+function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {
+    const value = mapper.type.value;
     if (!value || typeof value !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
-        var tempDictionary = {};
-        for (var _i = 0, _a = Object.keys(responseBody); _i < _a.length; _i++) {
-            var key = _a[_i];
-            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName);
+        const tempDictionary = {};
+        for (const key of Object.keys(responseBody)) {
+            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);
         }
         return tempDictionary;
     }
     return responseBody;
 }
-function deserializeSequenceType(serializer, mapper, responseBody, objectName) {
-    var element = mapper.type.element;
+function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
+    const element = mapper.type.element;
     if (!element || typeof element !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
         if (!Array.isArray(responseBody)) {
             // xml2js will interpret a single element array as just the element, so force it to be an array
             responseBody = [responseBody];
         }
-        var tempArray = [];
-        for (var i = 0; i < responseBody.length; i++) {
-            tempArray[i] = serializer.deserialize(element, responseBody[i], objectName + "[" + i + "]");
+        const tempArray = [];
+        for (let i = 0; i < responseBody.length; i++) {
+            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);
         }
         return tempArray;
     }
     return responseBody;
 }
 function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
-    var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
     if (polymorphicDiscriminator) {
-        var discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
+        const discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
         if (discriminatorName != undefined) {
-            var discriminatorValue = object[discriminatorName];
+            const discriminatorValue = object[discriminatorName];
             if (discriminatorValue != undefined) {
-                var typeName = mapper.type.uberParent || mapper.type.className;
-                var indexDiscriminator = discriminatorValue === typeName
+                const typeName = mapper.type.uberParent || mapper.type.className;
+                const indexDiscriminator = discriminatorValue === typeName
                     ? discriminatorValue
                     : typeName + "." + discriminatorValue;
-                var polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
+                const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
                 if (polymorphicMapper) {
                     mapper = polymorphicMapper;
                 }
@@ -52224,6 +54672,7 @@ function getPolymorphicDiscriminatorSafely(serializer, typeName) {
 }
 // TODO: why is this here?
 function serializeObject(toSerialize) {
+    const castToSerialize = toSerialize;
     if (toSerialize == undefined)
         return undefined;
     if (toSerialize instanceof Uint8Array) {
@@ -52234,16 +54683,16 @@ function serializeObject(toSerialize) {
         return toSerialize.toISOString();
     }
     else if (Array.isArray(toSerialize)) {
-        var array = [];
-        for (var i = 0; i < toSerialize.length; i++) {
+        const array = [];
+        for (let i = 0; i < toSerialize.length; i++) {
             array.push(serializeObject(toSerialize[i]));
         }
         return array;
     }
     else if (typeof toSerialize === "object") {
-        var dictionary = {};
-        for (var property in toSerialize) {
-            dictionary[property] = serializeObject(toSerialize[property]);
+        const dictionary = {};
+        for (const property in toSerialize) {
+            dictionary[property] = serializeObject(castToSerialize[property]);
         }
         return dictionary;
     }
@@ -52253,14 +54702,14 @@ function serializeObject(toSerialize) {
  * Utility function to create a K:V from a list of strings
  */
 function strEnum(o) {
-    var result = {};
-    for (var _i = 0, o_1 = o; _i < o_1.length; _i++) {
-        var key = o_1[_i];
+    const result = {};
+    for (const key of o) {
         result[key] = key;
     }
     return result;
 }
-var MapperType = strEnum([
+// eslint-disable-next-line @typescript-eslint/no-redeclare
+const MapperType = strEnum([
     "Base64Url",
     "Boolean",
     "ByteArray",
@@ -52281,17 +54730,17 @@ var MapperType = strEnum([
 
 // Copyright (c) Microsoft Corporation.
 function isWebResourceLike(object) {
-    if (typeof object !== "object") {
-        return false;
-    }
-    if (typeof object.url === "string" &&
-        typeof object.method === "string" &&
-        typeof object.headers === "object" &&
-        isHttpHeadersLike(object.headers) &&
-        typeof object.validateRequestProperties === "function" &&
-        typeof object.prepare === "function" &&
-        typeof object.clone === "function") {
-        return true;
+    if (object && typeof object === "object") {
+        const castObject = object;
+        if (typeof castObject.url === "string" &&
+            typeof castObject.method === "string" &&
+            typeof castObject.headers === "object" &&
+            isHttpHeadersLike(castObject.headers) &&
+            typeof castObject.validateRequestProperties === "function" &&
+            typeof castObject.prepare === "function" &&
+            typeof castObject.clone === "function") {
+            return true;
+        }
     }
     return false;
 }
@@ -52300,12 +54749,11 @@ function isWebResourceLike(object) {
  *
  * This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary
  * properties to initiate a request.
- *
- * @constructor
  */
-var WebResource = /** @class */ (function () {
-    function WebResource(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse) {
+class WebResource {
+    constructor(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
         this.streamResponseBody = streamResponseBody;
+        this.streamResponseStatusCodes = streamResponseStatusCodes;
         this.url = url || "";
         this.method = method || "GET";
         this.headers = isHttpHeadersLike(headers) ? headers : new HttpHeaders(headers);
@@ -52327,20 +54775,20 @@ var WebResource = /** @class */ (function () {
      * headers["accept-language"] are defined. It will throw an error if one of the above
      * mentioned properties are not defined.
      */
-    WebResource.prototype.validateRequestProperties = function () {
+    validateRequestProperties() {
         if (!this.method) {
             throw new Error("WebResource.method is required.");
         }
         if (!this.url) {
             throw new Error("WebResource.url is required.");
         }
-    };
+    }
     /**
      * Prepares the request.
-     * @param {RequestPrepareOptions} options Options to provide for preparing the request.
-     * @returns {WebResource} Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
+     * @param options - Options to provide for preparing the request.
+     * @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
      */
-    WebResource.prototype.prepare = function (options) {
+    prepare(options) {
         if (!options) {
             throw new Error("options object is required");
         }
@@ -52369,7 +54817,7 @@ var WebResource = /** @class */ (function () {
         }
         // set the method
         if (options.method) {
-            var validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
+            const validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
             if (validMethods.indexOf(options.method.toUpperCase()) === -1) {
                 throw new Error('The provided method "' +
                     options.method +
@@ -52380,70 +54828,70 @@ var WebResource = /** @class */ (function () {
         this.method = options.method.toUpperCase();
         // construct the url if path template is provided
         if (options.pathTemplate) {
-            var pathTemplate_1 = options.pathTemplate, pathParameters_1 = options.pathParameters;
-            if (typeof pathTemplate_1 !== "string") {
+            const { pathTemplate, pathParameters } = options;
+            if (typeof pathTemplate !== "string") {
                 throw new Error('options.pathTemplate must be of type "string".');
             }
             if (!options.baseUrl) {
                 options.baseUrl = "https://management.azure.com";
             }
-            var baseUrl = options.baseUrl;
-            var url_1 = baseUrl +
+            const baseUrl = options.baseUrl;
+            let url = baseUrl +
                 (baseUrl.endsWith("/") ? "" : "/") +
-                (pathTemplate_1.startsWith("/") ? pathTemplate_1.slice(1) : pathTemplate_1);
-            var segments = url_1.match(/({[\w-]*\s*[\w-]*})/gi);
+                (pathTemplate.startsWith("/") ? pathTemplate.slice(1) : pathTemplate);
+            const segments = url.match(/({[\w-]*\s*[\w-]*})/gi);
             if (segments && segments.length) {
-                if (!pathParameters_1) {
-                    throw new Error("pathTemplate: " + pathTemplate_1 + " has been provided. Hence, options.pathParameters must also be provided.");
+                if (!pathParameters) {
+                    throw new Error(`pathTemplate: ${pathTemplate} has been provided. Hence, options.pathParameters must also be provided.`);
                 }
                 segments.forEach(function (item) {
-                    var pathParamName = item.slice(1, -1);
-                    var pathParam = pathParameters_1[pathParamName];
+                    const pathParamName = item.slice(1, -1);
+                    const pathParam = pathParameters[pathParamName];
                     if (pathParam === null ||
                         pathParam === undefined ||
                         !(typeof pathParam === "string" || typeof pathParam === "object")) {
-                        var stringifiedPathParameters = JSON.stringify(pathParameters_1, undefined, 2);
-                        throw new Error("pathTemplate: " + pathTemplate_1 + " contains the path parameter " + pathParamName +
-                            (" however, it is not present in parameters: " + stringifiedPathParameters + ".") +
-                            ("The value of the path parameter can either be a \"string\" of the form { " + pathParamName + ": \"some sample value\" } or ") +
-                            ("it can be an \"object\" of the form { \"" + pathParamName + "\": { value: \"some sample value\", skipUrlEncoding: true } }."));
+                        const stringifiedPathParameters = JSON.stringify(pathParameters, undefined, 2);
+                        throw new Error(`pathTemplate: ${pathTemplate} contains the path parameter ${pathParamName}` +
+                            ` however, it is not present in parameters: ${stringifiedPathParameters}.` +
+                            `The value of the path parameter can either be a "string" of the form { ${pathParamName}: "some sample value" } or ` +
+                            `it can be an "object" of the form { "${pathParamName}": { value: "some sample value", skipUrlEncoding: true } }.`);
                     }
                     if (typeof pathParam.valueOf() === "string") {
-                        url_1 = url_1.replace(item, encodeURIComponent(pathParam));
+                        url = url.replace(item, encodeURIComponent(pathParam));
                     }
                     if (typeof pathParam.valueOf() === "object") {
                         if (!pathParam.value) {
-                            throw new Error("options.pathParameters[" + pathParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.pathParameters[${pathParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (pathParam.skipUrlEncoding) {
-                            url_1 = url_1.replace(item, pathParam.value);
+                            url = url.replace(item, pathParam.value);
                         }
                         else {
-                            url_1 = url_1.replace(item, encodeURIComponent(pathParam.value));
+                            url = url.replace(item, encodeURIComponent(pathParam.value));
                         }
                     }
                 });
             }
-            this.url = url_1;
+            this.url = url;
         }
         // append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.
         if (options.queryParameters) {
-            var queryParameters = options.queryParameters;
+            const queryParameters = options.queryParameters;
             if (typeof queryParameters !== "object") {
-                throw new Error("options.queryParameters must be of type object. It should be a JSON object " +
-                    "of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. " +
-                    "The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.");
+                throw new Error(`options.queryParameters must be of type object. It should be a JSON object ` +
+                    `of "query-parameter-name" as the key and the "query-parameter-value" as the value. ` +
+                    `The "query-parameter-value" may be fo type "string" or an "object" of the form { value: "query-parameter-value", skipUrlEncoding: true }.`);
             }
             // append question mark if it is not present in the url
             if (this.url && this.url.indexOf("?") === -1) {
                 this.url += "?";
             }
             // construct queryString
-            var queryParams = [];
+            const queryParams = [];
             // We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().
             this.query = {};
-            for (var queryParamName in queryParameters) {
-                var queryParam = queryParameters[queryParamName];
+            for (const queryParamName in queryParameters) {
+                const queryParam = queryParameters[queryParamName];
                 if (queryParam) {
                     if (typeof queryParam === "string") {
                         queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam));
@@ -52451,7 +54899,7 @@ var WebResource = /** @class */ (function () {
                     }
                     else if (typeof queryParam === "object") {
                         if (!queryParam.value) {
-                            throw new Error("options.queryParameters[" + queryParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.queryParameters[${queryParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (queryParam.skipUrlEncoding) {
                             queryParams.push(queryParamName + "=" + queryParam.value);
@@ -52469,9 +54917,8 @@ var WebResource = /** @class */ (function () {
         }
         // add headers to the request if they are provided
         if (options.headers) {
-            var headers = options.headers;
-            for (var _i = 0, _a = Object.keys(options.headers); _i < _a.length; _i++) {
-                var headerName = _a[_i];
+            const headers = options.headers;
+            for (const headerName of Object.keys(options.headers)) {
                 this.headers.set(headerName, headers[headerName]);
             }
         }
@@ -52487,7 +54934,7 @@ var WebResource = /** @class */ (function () {
         if (!this.headers.get("Content-Type")) {
             this.headers.set("Content-Type", "application/json; charset=utf-8");
         }
-        // set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicilty
+        // set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicitly
         this.body = options.body;
         if (options.body !== undefined && options.body !== null) {
             // body as a stream special case. set the body as-is and check for some special request headers specific to sending a stream.
@@ -52511,17 +54958,20 @@ var WebResource = /** @class */ (function () {
         if (options.spanOptions) {
             this.spanOptions = options.spanOptions;
         }
+        if (options.tracingContext) {
+            this.tracingContext = options.tracingContext;
+        }
         this.abortSignal = options.abortSignal;
         this.onDownloadProgress = options.onDownloadProgress;
         this.onUploadProgress = options.onUploadProgress;
         return this;
-    };
+    }
     /**
      * Clone this WebResource HTTP request object.
-     * @returns {WebResource} The clone of this WebResource HTTP request object.
+     * @returns The clone of this WebResource HTTP request object.
      */
-    WebResource.prototype.clone = function () {
-        var result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse);
+    clone() {
+        const result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
         if (this.formData) {
             result.formData = this.formData;
         }
@@ -52535,94 +54985,95 @@ var WebResource = /** @class */ (function () {
             result.operationResponseGetter = this.operationResponseGetter;
         }
         return result;
-    };
-    return WebResource;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var custom = util.inspect.custom;
+const custom = util.inspect.custom;
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A class that handles the query portion of a URLBuilder.
  */
-var URLQuery = /** @class */ (function () {
-    function URLQuery() {
+class URLQuery {
+    constructor() {
         this._rawQuery = {};
     }
     /**
      * Get whether or not there any query parameters in this URLQuery.
      */
-    URLQuery.prototype.any = function () {
+    any() {
         return Object.keys(this._rawQuery).length > 0;
-    };
+    }
     /**
      * Get the keys of the query string.
      */
-    URLQuery.prototype.keys = function () {
+    keys() {
         return Object.keys(this._rawQuery);
-    };
+    }
     /**
      * Set a query parameter with the provided name and value. If the parameterValue is undefined or
      * empty, then this will attempt to remove an existing query parameter with the provided
      * parameterName.
      */
-    URLQuery.prototype.set = function (parameterName, parameterValue) {
+    set(parameterName, parameterValue) {
+        const caseParameterValue = parameterValue;
         if (parameterName) {
-            if (parameterValue !== undefined && parameterValue !== null) {
-                var newValue = Array.isArray(parameterValue) ? parameterValue : parameterValue.toString();
+            if (caseParameterValue !== undefined && caseParameterValue !== null) {
+                const newValue = Array.isArray(caseParameterValue)
+                    ? caseParameterValue
+                    : caseParameterValue.toString();
                 this._rawQuery[parameterName] = newValue;
             }
             else {
                 delete this._rawQuery[parameterName];
             }
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided name. If no parameter exists with the
      * provided parameter name, then undefined will be returned.
      */
-    URLQuery.prototype.get = function (parameterName) {
+    get(parameterName) {
         return parameterName ? this._rawQuery[parameterName] : undefined;
-    };
+    }
     /**
      * Get the string representation of this query. The return value will not start with a "?".
      */
-    URLQuery.prototype.toString = function () {
-        var result = "";
-        for (var parameterName in this._rawQuery) {
+    toString() {
+        let result = "";
+        for (const parameterName in this._rawQuery) {
             if (result) {
                 result += "&";
             }
-            var parameterValue = this._rawQuery[parameterName];
+            const parameterValue = this._rawQuery[parameterName];
             if (Array.isArray(parameterValue)) {
-                var parameterStrings = [];
-                for (var _i = 0, parameterValue_1 = parameterValue; _i < parameterValue_1.length; _i++) {
-                    var parameterValueElement = parameterValue_1[_i];
-                    parameterStrings.push(parameterName + "=" + parameterValueElement);
+                const parameterStrings = [];
+                for (const parameterValueElement of parameterValue) {
+                    parameterStrings.push(`${parameterName}=${parameterValueElement}`);
                 }
                 result += parameterStrings.join("&");
             }
             else {
-                result += parameterName + "=" + parameterValue;
+                result += `${parameterName}=${parameterValue}`;
             }
         }
         return result;
-    };
+    }
     /**
      * Parse a URLQuery from the provided text.
      */
-    URLQuery.parse = function (text) {
-        var result = new URLQuery();
+    static parse(text) {
+        const result = new URLQuery();
         if (text) {
             if (text.startsWith("?")) {
                 text = text.substring(1);
             }
-            var currentState = "ParameterName";
-            var parameterName = "";
-            var parameterValue = "";
-            for (var i = 0; i < text.length; ++i) {
-                var currentCharacter = text[i];
+            let currentState = "ParameterName";
+            let parameterName = "";
+            let parameterValue = "";
+            for (let i = 0; i < text.length; ++i) {
+                const currentCharacter = text[i];
                 switch (currentState) {
                     case "ParameterName":
                         switch (currentCharacter) {
@@ -52660,81 +55111,78 @@ var URLQuery = /** @class */ (function () {
             }
         }
         return result;
-    };
-    return URLQuery;
-}());
+    }
+}
 /**
  * A class that handles creating, modifying, and parsing URLs.
  */
-var URLBuilder = /** @class */ (function () {
-    function URLBuilder() {
-    }
+class URLBuilder {
     /**
      * Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL
      * (such as a host, port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setScheme = function (scheme) {
+    setScheme(scheme) {
         if (!scheme) {
             this._scheme = undefined;
         }
         else {
             this.set(scheme, "SCHEME");
         }
-    };
+    }
     /**
      * Get the scheme that has been set in this URL.
      */
-    URLBuilder.prototype.getScheme = function () {
+    getScheme() {
         return this._scheme;
-    };
+    }
     /**
      * Set the host for this URL. If the provided host contains other parts of a URL (such as a
      * port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setHost = function (host) {
+    setHost(host) {
         if (!host) {
             this._host = undefined;
         }
         else {
             this.set(host, "SCHEME_OR_HOST");
         }
-    };
+    }
     /**
      * Get the host that has been set in this URL.
      */
-    URLBuilder.prototype.getHost = function () {
+    getHost() {
         return this._host;
-    };
+    }
     /**
      * Set the port for this URL. If the provided port contains other parts of a URL (such as a
      * path or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setPort = function (port) {
+    setPort(port) {
         if (port === undefined || port === null || port === "") {
             this._port = undefined;
         }
         else {
             this.set(port.toString(), "PORT");
         }
-    };
+    }
     /**
      * Get the port that has been set in this URL.
      */
-    URLBuilder.prototype.getPort = function () {
+    getPort() {
         return this._port;
-    };
+    }
     /**
      * Set the path for this URL. If the provided path contains a query, then it will be added to
      * this URL as well.
      */
-    URLBuilder.prototype.setPath = function (path) {
+    setPath(path) {
         if (!path) {
             this._path = undefined;
         }
         else {
-            var schemeIndex = path.indexOf("://");
+            const schemeIndex = path.indexOf("://");
             if (schemeIndex !== -1) {
-                var schemeStart = path.lastIndexOf("/", schemeIndex);
+                const schemeStart = path.lastIndexOf("/", schemeIndex);
                 // Make sure to only grab the URL part of the path before setting the state back to SCHEME
                 // this will handle cases such as "/a/b/c/https://microsoft.com" => "https://microsoft.com"
                 this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), "SCHEME");
@@ -52743,14 +55191,14 @@ var URLBuilder = /** @class */ (function () {
                 this.set(path, "PATH");
             }
         }
-    };
+    }
     /**
      * Append the provided path to this URL's existing path. If the provided path contains a query,
      * then it will be added to this URL as well.
      */
-    URLBuilder.prototype.appendPath = function (path) {
+    appendPath(path) {
         if (path) {
-            var currentPath = this.getPath();
+            let currentPath = this.getPath();
             if (currentPath) {
                 if (!currentPath.endsWith("/")) {
                     currentPath += "/";
@@ -52762,58 +55210,58 @@ var URLBuilder = /** @class */ (function () {
             }
             this.set(path, "PATH");
         }
-    };
+    }
     /**
      * Get the path that has been set in this URL.
      */
-    URLBuilder.prototype.getPath = function () {
+    getPath() {
         return this._path;
-    };
+    }
     /**
      * Set the query in this URL.
      */
-    URLBuilder.prototype.setQuery = function (query) {
+    setQuery(query) {
         if (!query) {
             this._query = undefined;
         }
         else {
             this._query = URLQuery.parse(query);
         }
-    };
+    }
     /**
      * Set a query parameter with the provided name and value in this URL's query. If the provided
      * query parameter value is undefined or empty, then the query parameter will be removed if it
      * existed.
      */
-    URLBuilder.prototype.setQueryParameter = function (queryParameterName, queryParameterValue) {
+    setQueryParameter(queryParameterName, queryParameterValue) {
         if (queryParameterName) {
             if (!this._query) {
                 this._query = new URLQuery();
             }
             this._query.set(queryParameterName, queryParameterValue);
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided query parameter name. If no query
      * parameter exists with the provided name, then undefined will be returned.
      */
-    URLBuilder.prototype.getQueryParameterValue = function (queryParameterName) {
+    getQueryParameterValue(queryParameterName) {
         return this._query ? this._query.get(queryParameterName) : undefined;
-    };
+    }
     /**
      * Get the query in this URL.
      */
-    URLBuilder.prototype.getQuery = function () {
+    getQuery() {
         return this._query ? this._query.toString() : undefined;
-    };
+    }
     /**
      * Set the parts of this URL by parsing the provided text using the provided startState.
      */
-    URLBuilder.prototype.set = function (text, startState) {
-        var tokenizer = new URLTokenizer(text, startState);
+    set(text, startState) {
+        const tokenizer = new URLTokenizer(text, startState);
         while (tokenizer.next()) {
-            var token = tokenizer.current();
-            var tokenPath = void 0;
+            const token = tokenizer.current();
+            let tokenPath;
             if (token) {
                 switch (token.type) {
                     case "SCHEME":
@@ -52835,21 +55283,21 @@ var URLBuilder = /** @class */ (function () {
                         this._query = URLQuery.parse(token.text);
                         break;
                     default:
-                        throw new Error("Unrecognized URLTokenType: " + token.type);
+                        throw new Error(`Unrecognized URLTokenType: ${token.type}`);
                 }
             }
         }
-    };
-    URLBuilder.prototype.toString = function () {
-        var result = "";
+    }
+    toString() {
+        let result = "";
         if (this._scheme) {
-            result += this._scheme + "://";
+            result += `${this._scheme}://`;
         }
         if (this._host) {
             result += this._host;
         }
         if (this._port) {
-            result += ":" + this._port;
+            result += `:${this._port}`;
         }
         if (this._path) {
             if (!this._path.startsWith("/")) {
@@ -52858,15 +55306,15 @@ var URLBuilder = /** @class */ (function () {
             result += this._path;
         }
         if (this._query && this._query.any()) {
-            result += "?" + this._query.toString();
+            result += `?${this._query.toString()}`;
         }
         return result;
-    };
+    }
     /**
      * If the provided searchValue is found in this URLBuilder, then replace it with the provided
      * replaceValue.
      */
-    URLBuilder.prototype.replaceAll = function (searchValue, replaceValue) {
+    replaceAll(searchValue, replaceValue) {
         if (searchValue) {
             this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));
             this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));
@@ -52874,42 +55322,40 @@ var URLBuilder = /** @class */ (function () {
             this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));
             this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));
         }
-    };
-    URLBuilder.parse = function (text) {
-        var result = new URLBuilder();
+    }
+    static parse(text) {
+        const result = new URLBuilder();
         result.set(text, "SCHEME_OR_HOST");
         return result;
-    };
-    return URLBuilder;
-}());
-var URLToken = /** @class */ (function () {
-    function URLToken(text, type) {
+    }
+}
+class URLToken {
+    constructor(text, type) {
         this.text = text;
         this.type = type;
     }
-    URLToken.scheme = function (text) {
+    static scheme(text) {
         return new URLToken(text, "SCHEME");
-    };
-    URLToken.host = function (text) {
+    }
+    static host(text) {
         return new URLToken(text, "HOST");
-    };
-    URLToken.port = function (text) {
+    }
+    static port(text) {
         return new URLToken(text, "PORT");
-    };
-    URLToken.path = function (text) {
+    }
+    static path(text) {
         return new URLToken(text, "PATH");
-    };
-    URLToken.query = function (text) {
+    }
+    static query(text) {
         return new URLToken(text, "QUERY");
-    };
-    return URLToken;
-}());
+    }
+}
 /**
  * Get whether or not the provided character (single character string) is an alphanumeric (letter or
  * digit) character.
  */
 function isAlphaNumericCharacter(character) {
-    var characterCode = character.charCodeAt(0);
+    const characterCode = character.charCodeAt(0);
     return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||
         (65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||
         (97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);
@@ -52917,8 +55363,8 @@ function isAlphaNumericCharacter(character) {
 /**
  * A class that tokenizes URL strings.
  */
-var URLTokenizer = /** @class */ (function () {
-    function URLTokenizer(_text, state) {
+class URLTokenizer {
+    constructor(_text, state) {
         this._text = _text;
         this._textLength = _text ? _text.length : 0;
         this._currentState = state !== undefined && state !== null ? state : "SCHEME_OR_HOST";
@@ -52928,13 +55374,13 @@ var URLTokenizer = /** @class */ (function () {
      * Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer
      * hasn't started or has finished tokenizing.
      */
-    URLTokenizer.prototype.current = function () {
+    current() {
         return this._currentToken;
-    };
+    }
     /**
      * Advance to the next URLToken and return whether or not a URLToken was found.
      */
-    URLTokenizer.prototype.next = function () {
+    next() {
         if (!hasCurrentCharacter(this)) {
             this._currentToken = undefined;
         }
@@ -52959,18 +55405,17 @@ var URLTokenizer = /** @class */ (function () {
                     nextQuery(this);
                     break;
                 default:
-                    throw new Error("Unrecognized URLTokenizerState: " + this._currentState);
+                    throw new Error(`Unrecognized URLTokenizerState: ${this._currentState}`);
             }
         }
         return !!this._currentToken;
-    };
-    return URLTokenizer;
-}());
+    }
+}
 /**
  * Read the remaining characters from this Tokenizer's character stream.
  */
 function readRemaining(tokenizer) {
-    var result = "";
+    let result = "";
     if (tokenizer._currentIndex < tokenizer._textLength) {
         result = tokenizer._text.substring(tokenizer._currentIndex);
         tokenizer._currentIndex = tokenizer._textLength;
@@ -53006,7 +55451,7 @@ function nextCharacter(tokenizer, step) {
  * Tokenizer's stream of characters.
  */
 function peekCharacters(tokenizer, charactersToPeek) {
-    var endIndex = tokenizer._currentIndex + charactersToPeek;
+    let endIndex = tokenizer._currentIndex + charactersToPeek;
     if (tokenizer._textLength < endIndex) {
         endIndex = tokenizer._textLength;
     }
@@ -53017,9 +55462,9 @@ function peekCharacters(tokenizer, charactersToPeek) {
  * is false when provided the current character.
  */
 function readWhile(tokenizer, condition) {
-    var result = "";
+    let result = "";
     while (hasCurrentCharacter(tokenizer)) {
-        var currentCharacter = getCurrentCharacter(tokenizer);
+        const currentCharacter = getCurrentCharacter(tokenizer);
         if (!condition(currentCharacter)) {
             break;
         }
@@ -53035,21 +55480,17 @@ function readWhile(tokenizer, condition) {
  * character stream is reached.
  */
 function readWhileLetterOrDigit(tokenizer) {
-    return readWhile(tokenizer, function (character) { return isAlphaNumericCharacter(character); });
+    return readWhile(tokenizer, (character) => isAlphaNumericCharacter(character));
 }
 /**
  * Read characters from this Tokenizer until one of the provided terminating characters is read or
  * the end of the character stream is reached.
  */
-function readUntilCharacter(tokenizer) {
-    var terminatingCharacters = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        terminatingCharacters[_i - 1] = arguments[_i];
-    }
-    return readWhile(tokenizer, function (character) { return terminatingCharacters.indexOf(character) === -1; });
+function readUntilCharacter(tokenizer, ...terminatingCharacters) {
+    return readWhile(tokenizer, (character) => terminatingCharacters.indexOf(character) === -1);
 }
 function nextScheme(tokenizer) {
-    var scheme = readWhileLetterOrDigit(tokenizer);
+    const scheme = readWhileLetterOrDigit(tokenizer);
     tokenizer._currentToken = URLToken.scheme(scheme);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53059,7 +55500,7 @@ function nextScheme(tokenizer) {
     }
 }
 function nextSchemeOrHost(tokenizer) {
-    var schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
+    const schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentToken = URLToken.host(schemeOrHost);
         tokenizer._currentState = "DONE";
@@ -53088,7 +55529,7 @@ function nextHost(tokenizer) {
     if (peekCharacters(tokenizer, 3) === "://") {
         nextCharacter(tokenizer, 3);
     }
-    var host = readUntilCharacter(tokenizer, ":", "/", "?");
+    const host = readUntilCharacter(tokenizer, ":", "/", "?");
     tokenizer._currentToken = URLToken.host(host);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53107,7 +55548,7 @@ function nextPort(tokenizer) {
     if (getCurrentCharacter(tokenizer) === ":") {
         nextCharacter(tokenizer);
     }
-    var port = readUntilCharacter(tokenizer, "/", "?");
+    const port = readUntilCharacter(tokenizer, "/", "?");
     tokenizer._currentToken = URLToken.port(port);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53120,7 +55561,7 @@ function nextPort(tokenizer) {
     }
 }
 function nextPath(tokenizer) {
-    var path = readUntilCharacter(tokenizer, "?");
+    const path = readUntilCharacter(tokenizer, "?");
     tokenizer._currentToken = URLToken.path(path);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -53133,20 +55574,21 @@ function nextQuery(tokenizer) {
     if (getCurrentCharacter(tokenizer) === "?") {
         nextCharacter(tokenizer);
     }
-    var query = readRemaining(tokenizer);
+    const query = readRemaining(tokenizer);
     tokenizer._currentToken = URLToken.query(query);
     tokenizer._currentState = "DONE";
 }
 
 // Copyright (c) Microsoft Corporation.
-var RedactedString = "REDACTED";
-var defaultAllowedHeaderNames = [
+const RedactedString = "REDACTED";
+const defaultAllowedHeaderNames = [
     "x-ms-client-request-id",
     "x-ms-return-client-request-id",
     "x-ms-useragent",
     "x-ms-correlation-request-id",
     "x-ms-request-id",
     "client-request-id",
+    "ms-cv",
     "return-client-request-id",
     "traceparent",
     "Access-Control-Allow-Credentials",
@@ -53159,6 +55601,7 @@ var defaultAllowedHeaderNames = [
     "Access-Control-Request-Method",
     "Origin",
     "Accept",
+    "Accept-Encoding",
     "Cache-Control",
     "Connection",
     "Content-Length",
@@ -53178,64 +55621,68 @@ var defaultAllowedHeaderNames = [
     "Transfer-Encoding",
     "User-Agent"
 ];
-var defaultAllowedQueryParameters = ["api-version"];
-var Sanitizer = /** @class */ (function () {
-    function Sanitizer(_a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.allowedHeaderNames, allowedHeaderNames = _c === void 0 ? [] : _c, _d = _b.allowedQueryParameters, allowedQueryParameters = _d === void 0 ? [] : _d;
+const defaultAllowedQueryParameters = ["api-version"];
+class Sanitizer {
+    constructor({ allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
         allowedHeaderNames = Array.isArray(allowedHeaderNames)
             ? defaultAllowedHeaderNames.concat(allowedHeaderNames)
             : defaultAllowedHeaderNames;
         allowedQueryParameters = Array.isArray(allowedQueryParameters)
             ? defaultAllowedQueryParameters.concat(allowedQueryParameters)
             : defaultAllowedQueryParameters;
-        this.allowedHeaderNames = new Set(allowedHeaderNames.map(function (n) { return n.toLowerCase(); }));
-        this.allowedQueryParameters = new Set(allowedQueryParameters.map(function (p) { return p.toLowerCase(); }));
+        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));
+        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));
     }
-    Sanitizer.prototype.sanitize = function (obj) {
-        return JSON.stringify(obj, this.replacer.bind(this), 2);
-    };
-    Sanitizer.prototype.replacer = function (key, value) {
-        // Ensure Errors include their interesting non-enumerable members
-        if (value instanceof Error) {
-            return tslib.__assign(tslib.__assign({}, value), { name: value.name, message: value.message });
-        }
-        if (key === "_headersMap") {
-            return this.sanitizeHeaders(key, value);
-        }
-        else if (key === "url") {
-            return this.sanitizeUrl(value);
-        }
-        else if (key === "query") {
-            return this.sanitizeQuery(value);
-        }
-        else if (key === "body") {
-            // Don't log the request body
-            return undefined;
-        }
-        else if (key === "response") {
-            // Don't log response again
-            return undefined;
-        }
-        else if (key === "operationSpec") {
-            // When using sendOperationRequest, the request carries a massive
-            // field with the autorest spec. No need to log it.
-            return undefined;
-        }
-        return value;
-    };
-    Sanitizer.prototype.sanitizeHeaders = function (_, value) {
-        return this.sanitizeObject(value, this.allowedHeaderNames, function (v, k) { return v[k].value; });
-    };
-    Sanitizer.prototype.sanitizeQuery = function (value) {
-        return this.sanitizeObject(value, this.allowedQueryParameters, function (v, k) { return v[k]; });
-    };
-    Sanitizer.prototype.sanitizeObject = function (value, allowedKeys, accessor) {
+    sanitize(obj) {
+        const seen = new Set();
+        return JSON.stringify(obj, (key, value) => {
+            // Ensure Errors include their interesting non-enumerable members
+            if (value instanceof Error) {
+                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });
+            }
+            if (key === "_headersMap") {
+                return this.sanitizeHeaders(value);
+            }
+            else if (key === "url") {
+                return this.sanitizeUrl(value);
+            }
+            else if (key === "query") {
+                return this.sanitizeQuery(value);
+            }
+            else if (key === "body") {
+                // Don't log the request body
+                return undefined;
+            }
+            else if (key === "response") {
+                // Don't log response again
+                return undefined;
+            }
+            else if (key === "operationSpec") {
+                // When using sendOperationRequest, the request carries a massive
+                // field with the autorest spec. No need to log it.
+                return undefined;
+            }
+            else if (Array.isArray(value) || isObject(value)) {
+                if (seen.has(value)) {
+                    return "[Circular]";
+                }
+                seen.add(value);
+            }
+            return value;
+        }, 2);
+    }
+    sanitizeHeaders(value) {
+        return this.sanitizeObject(value, this.allowedHeaderNames, (v, k) => v[k].value);
+    }
+    sanitizeQuery(value) {
+        return this.sanitizeObject(value, this.allowedQueryParameters, (v, k) => v[k]);
+    }
+    sanitizeObject(value, allowedKeys, accessor) {
         if (typeof value !== "object" || value === null) {
             return value;
         }
-        var sanitized = {};
-        for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const sanitized = {};
+        for (const k of Object.keys(value)) {
             if (allowedKeys.has(k.toLowerCase())) {
                 sanitized[k] = accessor(value, k);
             }
@@ -53244,236 +55691,233 @@ var Sanitizer = /** @class */ (function () {
             }
         }
         return sanitized;
-    };
-    Sanitizer.prototype.sanitizeUrl = function (value) {
+    }
+    sanitizeUrl(value) {
         if (typeof value !== "string" || value === null) {
             return value;
         }
-        var urlBuilder = URLBuilder.parse(value);
-        var queryString = urlBuilder.getQuery();
+        const urlBuilder = URLBuilder.parse(value);
+        const queryString = urlBuilder.getQuery();
         if (!queryString) {
             return value;
         }
-        var query = URLQuery.parse(queryString);
-        for (var _i = 0, _a = query.keys(); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const query = URLQuery.parse(queryString);
+        for (const k of query.keys()) {
             if (!this.allowedQueryParameters.has(k.toLowerCase())) {
                 query.set(k, RedactedString);
             }
         }
         urlBuilder.setQuery(query.toString());
         return urlBuilder.toString();
-    };
-    return Sanitizer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var errorSanitizer = new Sanitizer();
-var RestError = /** @class */ (function (_super) {
-    tslib.__extends(RestError, _super);
-    function RestError(message, code, statusCode, request, response) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "RestError";
-        _this.code = code;
-        _this.statusCode = statusCode;
-        _this.request = request;
-        _this.response = response;
-        Object.setPrototypeOf(_this, RestError.prototype);
-        return _this;
+const errorSanitizer = new Sanitizer();
+class RestError extends Error {
+    constructor(message, code, statusCode, request, response) {
+        super(message);
+        this.name = "RestError";
+        this.code = code;
+        this.statusCode = statusCode;
+        this.request = request;
+        this.response = response;
+        Object.setPrototypeOf(this, RestError.prototype);
     }
     /**
      * Logging method for util.inspect in Node
      */
-    RestError.prototype[custom] = function () {
-        return "RestError: " + this.message + " \n " + errorSanitizer.sanitize(this);
-    };
-    RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
-    RestError.PARSE_ERROR = "PARSE_ERROR";
-    return RestError;
-}(Error));
+    [custom]() {
+        return `RestError: ${this.message} \n ${errorSanitizer.sanitize(this)}`;
+    }
+}
+RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
+RestError.PARSE_ERROR = "PARSE_ERROR";
 
 // Copyright (c) Microsoft Corporation.
-var ReportTransform = /** @class */ (function (_super) {
-    tslib.__extends(ReportTransform, _super);
-    function ReportTransform(progressCallback) {
-        var _this = _super.call(this) || this;
-        _this.progressCallback = progressCallback;
-        _this.loadedBytes = 0;
-        return _this;
+const logger = logger$1.createClientLogger("core-http");
+
+// Copyright (c) Microsoft Corporation.
+class ReportTransform extends stream.Transform {
+    constructor(progressCallback) {
+        super();
+        this.progressCallback = progressCallback;
+        this.loadedBytes = 0;
     }
-    ReportTransform.prototype._transform = function (chunk, _encoding, callback) {
+    _transform(chunk, _encoding, callback) {
         this.push(chunk);
         this.loadedBytes += chunk.length;
         this.progressCallback({ loadedBytes: this.loadedBytes });
         callback(undefined);
-    };
-    return ReportTransform;
-}(stream.Transform));
-var FetchHttpClient = /** @class */ (function () {
-    function FetchHttpClient() {
     }
-    FetchHttpClient.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var abortController$1, abortListener, formData, requestForm_1, appendFormValue, _i, _a, formKey, formValue, j, contentType, body, onUploadProgress, uploadReportStream, platformSpecificRequestInit, requestInit, response, headers, operationResponse, _b, _c, onDownloadProgress, responseBody, downloadReportStream, length_1, error_1, fetchError;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        if (!httpRequest && typeof httpRequest !== "object") {
-                            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
-                        }
-                        abortController$1 = new abortController.AbortController();
-                        if (httpRequest.abortSignal) {
-                            if (httpRequest.abortSignal.aborted) {
-                                throw new abortController.AbortError("The operation was aborted.");
-                            }
-                            abortListener = function (event) {
-                                if (event.type === "abort") {
-                                    abortController$1.abort();
-                                }
-                            };
-                            httpRequest.abortSignal.addEventListener("abort", abortListener);
-                        }
-                        if (httpRequest.timeout) {
-                            setTimeout(function () {
-                                abortController$1.abort();
-                            }, httpRequest.timeout);
-                        }
-                        if (httpRequest.formData) {
-                            formData = httpRequest.formData;
-                            requestForm_1 = new FormData();
-                            appendFormValue = function (key, value) {
-                                // value function probably returns a stream so we can provide a fresh stream on each retry
-                                if (typeof value === "function") {
-                                    value = value();
-                                }
-                                // eslint-disable-next-line no-prototype-builtins
-                                if (value && value.hasOwnProperty("value") && value.hasOwnProperty("options")) {
-                                    requestForm_1.append(key, value.value, value.options);
-                                }
-                                else {
-                                    requestForm_1.append(key, value);
-                                }
-                            };
-                            for (_i = 0, _a = Object.keys(formData); _i < _a.length; _i++) {
-                                formKey = _a[_i];
-                                formValue = formData[formKey];
-                                if (Array.isArray(formValue)) {
-                                    for (j = 0; j < formValue.length; j++) {
-                                        appendFormValue(formKey, formValue[j]);
-                                    }
-                                }
-                                else {
-                                    appendFormValue(formKey, formValue);
-                                }
-                            }
-                            httpRequest.body = requestForm_1;
-                            httpRequest.formData = undefined;
-                            contentType = httpRequest.headers.get("Content-Type");
-                            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
-                                if (typeof requestForm_1.getBoundary === "function") {
-                                    httpRequest.headers.set("Content-Type", "multipart/form-data; boundary=" + requestForm_1.getBoundary());
-                                }
-                                else {
-                                    // browser will automatically apply a suitable content-type header
-                                    httpRequest.headers.remove("Content-Type");
-                                }
-                            }
-                        }
-                        body = httpRequest.body
-                            ? typeof httpRequest.body === "function"
-                                ? httpRequest.body()
-                                : httpRequest.body
-                            : undefined;
-                        if (httpRequest.onUploadProgress && httpRequest.body) {
-                            onUploadProgress = httpRequest.onUploadProgress;
-                            uploadReportStream = new ReportTransform(onUploadProgress);
-                            if (isReadableStream(body)) {
-                                body.pipe(uploadReportStream);
-                            }
-                            else {
-                                uploadReportStream.end(body);
-                            }
-                            body = uploadReportStream;
-                        }
-                        return [4 /*yield*/, this.prepareRequest(httpRequest)];
-                    case 1:
-                        platformSpecificRequestInit = _d.sent();
-                        requestInit = tslib.__assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal }, platformSpecificRequestInit);
-                        _d.label = 2;
-                    case 2:
-                        _d.trys.push([2, 8, 9, 10]);
-                        return [4 /*yield*/, this.fetch(httpRequest.url, requestInit)];
-                    case 3:
-                        response = _d.sent();
-                        headers = parseHeaders(response.headers);
-                        _b = {
-                            headers: headers,
-                            request: httpRequest,
-                            status: response.status,
-                            readableStreamBody: httpRequest.streamResponseBody
-                                ? response.body
-                                : undefined
-                        };
-                        if (!!httpRequest.streamResponseBody) return [3 /*break*/, 5];
-                        return [4 /*yield*/, response.text()];
-                    case 4:
-                        _c = _d.sent();
-                        return [3 /*break*/, 6];
-                    case 5:
-                        _c = undefined;
-                        _d.label = 6;
-                    case 6:
-                        operationResponse = (_b.bodyAsText = _c,
-                            _b);
-                        onDownloadProgress = httpRequest.onDownloadProgress;
-                        if (onDownloadProgress) {
-                            responseBody = response.body || undefined;
-                            if (isReadableStream(responseBody)) {
-                                downloadReportStream = new ReportTransform(onDownloadProgress);
-                                responseBody.pipe(downloadReportStream);
-                                operationResponse.readableStreamBody = downloadReportStream;
-                            }
-                            else {
-                                length_1 = parseInt(headers.get("Content-Length")) || undefined;
-                                if (length_1) {
-                                    // Calling callback for non-stream response for consistency with browser
-                                    onDownloadProgress({ loadedBytes: length_1 });
-                                }
-                            }
-                        }
-                        return [4 /*yield*/, this.processRequest(operationResponse)];
-                    case 7:
-                        _d.sent();
-                        return [2 /*return*/, operationResponse];
-                    case 8:
-                        error_1 = _d.sent();
-                        fetchError = error_1;
-                        if (fetchError.code === "ENOTFOUND") {
-                            throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
-                        }
-                        else if (fetchError.type === "aborted") {
-                            throw new abortController.AbortError("The operation was aborted.");
-                        }
-                        throw fetchError;
-                    case 9:
-                        // clean up event listener
-                        if (httpRequest.abortSignal && abortListener) {
-                            httpRequest.abortSignal.removeEventListener("abort", abortListener);
-                        }
-                        return [7 /*endfinally*/];
-                    case 10: return [2 /*return*/];
+}
+class FetchHttpClient {
+    async sendRequest(httpRequest) {
+        var _a;
+        if (!httpRequest && typeof httpRequest !== "object") {
+            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
+        }
+        const abortController$1 = new abortController.AbortController();
+        let abortListener;
+        if (httpRequest.abortSignal) {
+            if (httpRequest.abortSignal.aborted) {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            abortListener = (event) => {
+                if (event.type === "abort") {
+                    abortController$1.abort();
                 }
-            });
-        });
-    };
-    return FetchHttpClient;
-}());
+            };
+            httpRequest.abortSignal.addEventListener("abort", abortListener);
+        }
+        if (httpRequest.timeout) {
+            setTimeout(() => {
+                abortController$1.abort();
+            }, httpRequest.timeout);
+        }
+        if (httpRequest.formData) {
+            const formData = httpRequest.formData;
+            const requestForm = new FormData();
+            const appendFormValue = (key, value) => {
+                // value function probably returns a stream so we can provide a fresh stream on each retry
+                if (typeof value === "function") {
+                    value = value();
+                }
+                if (value &&
+                    Object.prototype.hasOwnProperty.call(value, "value") &&
+                    Object.prototype.hasOwnProperty.call(value, "options")) {
+                    requestForm.append(key, value.value, value.options);
+                }
+                else {
+                    requestForm.append(key, value);
+                }
+            };
+            for (const formKey of Object.keys(formData)) {
+                const formValue = formData[formKey];
+                if (Array.isArray(formValue)) {
+                    for (let j = 0; j < formValue.length; j++) {
+                        appendFormValue(formKey, formValue[j]);
+                    }
+                }
+                else {
+                    appendFormValue(formKey, formValue);
+                }
+            }
+            httpRequest.body = requestForm;
+            httpRequest.formData = undefined;
+            const contentType = httpRequest.headers.get("Content-Type");
+            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
+                if (typeof requestForm.getBoundary === "function") {
+                    httpRequest.headers.set("Content-Type", `multipart/form-data; boundary=${requestForm.getBoundary()}`);
+                }
+                else {
+                    // browser will automatically apply a suitable content-type header
+                    httpRequest.headers.remove("Content-Type");
+                }
+            }
+        }
+        let body = httpRequest.body
+            ? typeof httpRequest.body === "function"
+                ? httpRequest.body()
+                : httpRequest.body
+            : undefined;
+        if (httpRequest.onUploadProgress && httpRequest.body) {
+            const onUploadProgress = httpRequest.onUploadProgress;
+            const uploadReportStream = new ReportTransform(onUploadProgress);
+            if (isReadableStream(body)) {
+                body.pipe(uploadReportStream);
+            }
+            else {
+                uploadReportStream.end(body);
+            }
+            body = uploadReportStream;
+        }
+        const platformSpecificRequestInit = await this.prepareRequest(httpRequest);
+        const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
+        let operationResponse;
+        try {
+            const response = await this.fetch(httpRequest.url, requestInit);
+            const headers = parseHeaders(response.headers);
+            const streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
+                httpRequest.streamResponseBody;
+            operationResponse = {
+                headers: headers,
+                request: httpRequest,
+                status: response.status,
+                readableStreamBody: streaming
+                    ? response.body
+                    : undefined,
+                bodyAsText: !streaming ? await response.text() : undefined
+            };
+            const onDownloadProgress = httpRequest.onDownloadProgress;
+            if (onDownloadProgress) {
+                const responseBody = response.body || undefined;
+                if (isReadableStream(responseBody)) {
+                    const downloadReportStream = new ReportTransform(onDownloadProgress);
+                    responseBody.pipe(downloadReportStream);
+                    operationResponse.readableStreamBody = downloadReportStream;
+                }
+                else {
+                    const length = parseInt(headers.get("Content-Length")) || undefined;
+                    if (length) {
+                        // Calling callback for non-stream response for consistency with browser
+                        onDownloadProgress({ loadedBytes: length });
+                    }
+                }
+            }
+            await this.processRequest(operationResponse);
+            return operationResponse;
+        }
+        catch (error) {
+            const fetchError = error;
+            if (fetchError.code === "ENOTFOUND") {
+                throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
+            }
+            else if (fetchError.type === "aborted") {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            throw fetchError;
+        }
+        finally {
+            // clean up event listener
+            if (httpRequest.abortSignal && abortListener) {
+                let uploadStreamDone = Promise.resolve();
+                if (isReadableStream(body)) {
+                    uploadStreamDone = isStreamComplete(body);
+                }
+                let downloadStreamDone = Promise.resolve();
+                if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
+                    downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody, abortController$1);
+                }
+                Promise.all([uploadStreamDone, downloadStreamDone])
+                    .then(() => {
+                    var _a;
+                    (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
+                    return;
+                })
+                    .catch((e) => {
+                    logger.warning("Error when cleaning up abortListener on httpRequest", e);
+                });
+            }
+        }
+    }
+}
 function isReadableStream(body) {
     return body && typeof body.pipe === "function";
 }
+function isStreamComplete(stream, aborter) {
+    return new Promise((resolve) => {
+        stream.once("close", () => {
+            aborter === null || aborter === void 0 ? void 0 : aborter.abort();
+            resolve();
+        });
+        stream.once("end", resolve);
+        stream.once("error", resolve);
+    });
+}
 function parseHeaders(headers) {
-    var httpHeaders = new HttpHeaders();
-    headers.forEach(function (value, key) {
+    const httpHeaders = new HttpHeaders();
+    headers.forEach((value, key) => {
         httpHeaders.set(key, value);
     });
     return httpHeaders;
@@ -53481,14 +55925,14 @@ function parseHeaders(headers) {
 
 // Copyright (c) Microsoft Corporation.
 function createProxyAgent(requestUrl, proxySettings, headers) {
-    var host = URLBuilder.parse(proxySettings.host).getHost();
+    const host = URLBuilder.parse(proxySettings.host).getHost();
     if (!host) {
         throw new Error("Expecting a non-empty host in proxy settings.");
     }
     if (!isValidPort(proxySettings.port)) {
         throw new Error("Expecting a valid port number in the range of [0, 65535] in proxy settings.");
     }
-    var tunnelOptions = {
+    const tunnelOptions = {
         proxy: {
             host: host,
             port: proxySettings.port,
@@ -53496,18 +55940,21 @@ function createProxyAgent(requestUrl, proxySettings, headers) {
         }
     };
     if (proxySettings.username && proxySettings.password) {
-        tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}:${proxySettings.password}`;
     }
-    var isRequestHttps = isUrlHttps(requestUrl);
-    var isProxyHttps = isUrlHttps(proxySettings.host);
-    var proxyAgent = {
+    else if (proxySettings.username) {
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}`;
+    }
+    const isRequestHttps = isUrlHttps(requestUrl);
+    const isProxyHttps = isUrlHttps(proxySettings.host);
+    const proxyAgent = {
         isHttps: isRequestHttps,
         agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions)
     };
     return proxyAgent;
 }
 function isUrlHttps(url) {
-    var urlScheme = URLBuilder.parse(url).getScheme() || "";
+    const urlScheme = URLBuilder.parse(url).getScheme() || "";
     return urlScheme.toLowerCase() === "https";
 }
 function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
@@ -53534,41 +55981,45 @@ function isValidPort(port) {
 function getCachedAgent(isHttps, agentCache) {
     return isHttps ? agentCache.httpsAgent : agentCache.httpAgent;
 }
-var NodeFetchHttpClient = /** @class */ (function (_super) {
-    tslib.__extends(NodeFetchHttpClient, _super);
-    function NodeFetchHttpClient() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.proxyAgents = {};
-        _this.keepAliveAgents = {};
-        _this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
-        return _this;
+class NodeFetchHttpClient extends FetchHttpClient {
+    constructor() {
+        super(...arguments);
+        // a mapping of proxy settings string `${host}:${port}:${username}:${password}` to agent
+        this.proxyAgentMap = new Map();
+        this.keepAliveAgents = {};
+        this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
     }
-    NodeFetchHttpClient.prototype.getOrCreateAgent = function (httpRequest) {
-        var isHttps = isUrlHttps(httpRequest.url);
+    getOrCreateAgent(httpRequest) {
+        var _a;
+        const isHttps = isUrlHttps(httpRequest.url);
         // At the moment, proxy settings and keepAlive are mutually
         // exclusive because the 'tunnel' library currently lacks the
         // ability to create a proxy with keepAlive turned on.
         if (httpRequest.proxySettings) {
-            var agent = getCachedAgent(isHttps, this.proxyAgents);
+            const { host, port, username, password } = httpRequest.proxySettings;
+            const key = `${host}:${port}:${username}:${password}`;
+            const proxyAgents = (_a = this.proxyAgentMap.get(key)) !== null && _a !== void 0 ? _a : {};
+            let agent = getCachedAgent(isHttps, proxyAgents);
             if (agent) {
                 return agent;
             }
-            var tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
+            const tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
             agent = tunnel.agent;
             if (tunnel.isHttps) {
-                this.proxyAgents.httpsAgent = tunnel.agent;
+                proxyAgents.httpsAgent = tunnel.agent;
             }
             else {
-                this.proxyAgents.httpAgent = tunnel.agent;
+                proxyAgents.httpAgent = tunnel.agent;
             }
+            this.proxyAgentMap.set(key, proxyAgents);
             return agent;
         }
         else if (httpRequest.keepAlive) {
-            var agent = getCachedAgent(isHttps, this.keepAliveAgents);
+            let agent = getCachedAgent(isHttps, this.keepAliveAgents);
             if (agent) {
                 return agent;
             }
-            var agentOptions = {
+            const agentOptions = {
                 keepAlive: httpRequest.keepAlive
             };
             if (isHttps) {
@@ -53582,77 +56033,49 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
         else {
             return isHttps ? https.globalAgent : http.globalAgent;
         }
-    };
+    }
     // eslint-disable-next-line @azure/azure-sdk/ts-apisurface-standardized-verbs
-    NodeFetchHttpClient.prototype.fetch = function (input, init) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, node_fetch(input, init)];
+    async fetch(input, init) {
+        return node_fetch(input, init);
+    }
+    async prepareRequest(httpRequest) {
+        const requestInit = {};
+        if (this.cookieJar && !httpRequest.headers.get("Cookie")) {
+            const cookieString = await new Promise((resolve, reject) => {
+                this.cookieJar.getCookieString(httpRequest.url, (err, cookie) => {
+                    if (err) {
+                        reject(err);
+                    }
+                    else {
+                        resolve(cookie);
+                    }
+                });
             });
-        });
-    };
-    NodeFetchHttpClient.prototype.prepareRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var requestInit, cookieString;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        requestInit = {};
-                        if (!(this.cookieJar && !httpRequest.headers.get("Cookie"))) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.getCookieString(httpRequest.url, function (err, cookie) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve(cookie);
-                                    }
-                                });
-                            })];
-                    case 1:
-                        cookieString = _a.sent();
-                        httpRequest.headers.set("Cookie", cookieString);
-                        _a.label = 2;
-                    case 2:
-                        // Set the http(s) agent
-                        requestInit.agent = this.getOrCreateAgent(httpRequest);
-                        requestInit.compress = httpRequest.decompressResponse;
-                        return [2 /*return*/, requestInit];
-                }
-            });
-        });
-    };
-    NodeFetchHttpClient.prototype.processRequest = function (operationResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var setCookieHeader_1;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.cookieJar) return [3 /*break*/, 2];
-                        setCookieHeader_1 = operationResponse.headers.get("Set-Cookie");
-                        if (!(setCookieHeader_1 !== undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.setCookie(setCookieHeader_1, operationResponse.request.url, { ignoreError: true }, function (err) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve();
-                                    }
-                                });
-                            })];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return NodeFetchHttpClient;
-}(FetchHttpClient));
+            httpRequest.headers.set("Cookie", cookieString);
+        }
+        // Set the http(s) agent
+        requestInit.agent = this.getOrCreateAgent(httpRequest);
+        requestInit.compress = httpRequest.decompressResponse;
+        return requestInit;
+    }
+    async processRequest(operationResponse) {
+        if (this.cookieJar) {
+            const setCookieHeader = operationResponse.headers.get("Set-Cookie");
+            if (setCookieHeader !== undefined) {
+                await new Promise((resolve, reject) => {
+                    this.cookieJar.setCookie(setCookieHeader, operationResponse.request.url, { ignoreError: true }, (err) => {
+                        if (err) {
+                            reject(err);
+                        }
+                        else {
+                            resolve();
+                        }
+                    });
+                });
+            }
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (HttpPipelineLogLevel) {
@@ -53677,171 +56100,155 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
 /**
  * Converts an OperationOptions to a RequestOptionsBase
  *
- * @param opts OperationOptions object to convert to RequestOptionsBase
+ * @param opts - OperationOptions object to convert to RequestOptionsBase
  */
 function operationOptionsToRequestOptionsBase(opts) {
-    var requestOptions = opts.requestOptions, tracingOptions = opts.tracingOptions, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
-    var result = additionalOptions;
+    var _a;
+    const { requestOptions, tracingOptions } = opts, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
+    let result = additionalOptions;
     if (requestOptions) {
-        result = tslib.__assign(tslib.__assign({}, result), requestOptions);
+        result = Object.assign(Object.assign({}, result), requestOptions);
     }
     if (tracingOptions) {
-        result.spanOptions = tracingOptions.spanOptions;
+        result.tracingContext = tracingOptions.tracingContext;
+        // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+        result.spanOptions = (_a = tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions;
     }
     return result;
 }
 
 // Copyright (c) Microsoft Corporation.
-var BaseRequestPolicy = /** @class */ (function () {
-    function BaseRequestPolicy(_nextPolicy, _options) {
+class BaseRequestPolicy {
+    constructor(_nextPolicy, _options) {
         this._nextPolicy = _nextPolicy;
         this._options = _options;
     }
     /**
      * Get whether or not a log with the provided log level should be logged.
-     * @param logLevel The log level of the log that will be logged.
+     * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    BaseRequestPolicy.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return this._options.shouldLog(logLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meat the logger's threshold, then nothing will be logged.
-     * @param logLevel The log level of this log.
-     * @param message The message of this log.
+     * @param logLevel - The log level of this log.
+     * @param message - The message of this log.
      */
-    BaseRequestPolicy.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         this._options.log(logLevel, message);
-    };
-    return BaseRequestPolicy;
-}());
+    }
+}
 /**
  * Optional properties that can be used when creating a RequestPolicy.
  */
-var RequestPolicyOptions = /** @class */ (function () {
-    function RequestPolicyOptions(_logger) {
+class RequestPolicyOptions {
+    constructor(_logger) {
         this._logger = _logger;
     }
     /**
      * Get whether or not a log with the provided log level should be logged.
-     * @param logLevel The log level of the log that will be logged.
+     * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    RequestPolicyOptions.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return (!!this._logger &&
             logLevel !== exports.HttpPipelineLogLevel.OFF &&
             logLevel <= this._logger.minimumLogLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meet the logger's threshold, then nothing will be logged.
-     * @param logLevel The log level of this log.
-     * @param message The message of this log.
+     * @param logLevel - The log level of this log.
+     * @param message - The message of this log.
      */
-    RequestPolicyOptions.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         if (this._logger && this.shouldLog(logLevel)) {
             this._logger.log(logLevel, message);
         }
-    };
-    return RequestPolicyOptions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var logger = logger$1.createClientLogger("core-http");
-
-// Copyright (c) Microsoft Corporation.
-function logPolicy(loggingOptions) {
-    if (loggingOptions === void 0) { loggingOptions = {}; }
+function logPolicy(loggingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new LogPolicy(nextPolicy, options, loggingOptions);
         }
     };
 }
-var LogPolicy = /** @class */ (function (_super) {
-    tslib.__extends(LogPolicy, _super);
-    function LogPolicy(nextPolicy, options, _a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.logger, logger$1 = _c === void 0 ? logger.info : _c, _d = _b.allowedHeaderNames, allowedHeaderNames = _d === void 0 ? [] : _d, _e = _b.allowedQueryParameters, allowedQueryParameters = _e === void 0 ? [] : _e;
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.logger = logger$1;
-        _this.sanitizer = new Sanitizer({ allowedHeaderNames: allowedHeaderNames, allowedQueryParameters: allowedQueryParameters });
-        return _this;
+class LogPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, { logger: logger$1 = logger.info, allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
+        super(nextPolicy, options);
+        this.logger = logger$1;
+        this.sanitizer = new Sanitizer({ allowedHeaderNames, allowedQueryParameters });
     }
-    Object.defineProperty(LogPolicy.prototype, "allowedHeaderNames", {
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedHeaderNames;
-        },
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedHeaderNames) {
-            this.sanitizer.allowedHeaderNames = allowedHeaderNames;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(LogPolicy.prototype, "allowedQueryParameters", {
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedQueryParameters;
-        },
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedQueryParameters) {
-            this.sanitizer.allowedQueryParameters = allowedQueryParameters;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    LogPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedHeaderNames() {
+        return this.sanitizer.allowedHeaderNames;
+    }
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedHeaderNames(allowedHeaderNames) {
+        this.sanitizer.allowedHeaderNames = allowedHeaderNames;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedQueryParameters() {
+        return this.sanitizer.allowedQueryParameters;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedQueryParameters(allowedQueryParameters) {
+        this.sanitizer.allowedQueryParameters = allowedQueryParameters;
+    }
+    sendRequest(request) {
         if (!this.logger.enabled)
             return this._nextPolicy.sendRequest(request);
         this.logRequest(request);
-        return this._nextPolicy.sendRequest(request).then(function (response) { return _this.logResponse(response); });
-    };
-    LogPolicy.prototype.logRequest = function (request) {
-        this.logger("Request: " + this.sanitizer.sanitize(request));
-    };
-    LogPolicy.prototype.logResponse = function (response) {
-        this.logger("Response status code: " + response.status);
-        this.logger("Headers: " + this.sanitizer.sanitize(response.headers));
+        return this._nextPolicy.sendRequest(request).then((response) => this.logResponse(response));
+    }
+    logRequest(request) {
+        this.logger(`Request: ${this.sanitizer.sanitize(request)}`);
+    }
+    logResponse(response) {
+        this.logger(`Response status code: ${response.status}`);
+        this.logger(`Headers: ${this.sanitizer.sanitize(response.headers)}`);
         return response;
-    };
-    return LogPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
 /**
  * Get the path to this parameter's value as a dotted string (a.b.c).
- * @param parameter The parameter to get the path string for.
+ * @param parameter - The parameter to get the path string for.
  * @returns The path to this parameter's value as a dotted string.
  */
 function getPathStringFromParameter(parameter) {
     return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);
 }
 function getPathStringFromParameterPath(parameterPath, mapper) {
-    var result;
+    let result;
     if (typeof parameterPath === "string") {
         result = parameterPath;
     }
@@ -53855,14 +56262,17 @@ function getPathStringFromParameterPath(parameterPath, mapper) {
 }
 
 // Copyright (c) Microsoft Corporation.
-function isStreamOperation(operationSpec) {
-    var result = false;
-    for (var statusCode in operationSpec.responses) {
-        var operationResponse = operationSpec.responses[statusCode];
+/**
+ * Gets the list of status codes for streaming responses.
+ * @internal
+ */
+function getStreamResponseStatusCodes(operationSpec) {
+    const result = new Set();
+    for (const statusCode in operationSpec.responses) {
+        const operationResponse = operationSpec.responses[statusCode];
         if (operationResponse.bodyMapper &&
             operationResponse.bodyMapper.type.name === MapperType.Stream) {
-            result = true;
-            break;
+            result.add(Number(statusCode));
         }
     }
     return result;
@@ -53873,18 +56283,17 @@ function isStreamOperation(operationSpec) {
 // by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536
 // By creating a new copy of the settings each time we instantiate the parser,
 // we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally.
-var xml2jsDefaultOptionsV2 = {
+const xml2jsDefaultOptionsV2 = {
     explicitCharkey: false,
     trim: false,
     normalize: false,
     normalizeTags: false,
-    attrkey: "$",
-    charkey: "_",
+    attrkey: XML_ATTRKEY,
     explicitArray: true,
     ignoreAttrs: false,
     mergeAttrs: false,
     explicitRoot: true,
-    validator: null,
+    validator: undefined,
     xmlns: false,
     explicitChildren: false,
     preserveChildrenOrder: false,
@@ -53893,17 +56302,17 @@ var xml2jsDefaultOptionsV2 = {
     includeWhiteChars: false,
     async: false,
     strict: true,
-    attrNameProcessors: null,
-    attrValueProcessors: null,
-    tagNameProcessors: null,
-    valueProcessors: null,
+    attrNameProcessors: undefined,
+    attrValueProcessors: undefined,
+    tagNameProcessors: undefined,
+    valueProcessors: undefined,
     rootName: "root",
     xmldec: {
         version: "1.0",
         encoding: "UTF-8",
         standalone: true
     },
-    doctype: null,
+    doctype: undefined,
     renderOpts: {
         pretty: true,
         indent: "  ",
@@ -53915,40 +56324,42 @@ var xml2jsDefaultOptionsV2 = {
     cdata: false
 };
 // The xml2js settings for general XML parsing operations.
-var xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsParserSettings.explicitArray = false;
 // The xml2js settings for general XML building operations.
-var xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsBuilderSettings.explicitArray = false;
 xml2jsBuilderSettings.renderOpts = {
     pretty: false
 };
 /**
  * Converts given JSON object to XML string
- * @param obj JSON object to be converted into XML string
- * @param opts Options that govern the parsing of given JSON object
- * `rootName` indicates the name of the root element in the resulting XML
+ * @param obj - JSON object to be converted into XML string
+ * @param opts - Options that govern the parsing of given JSON object
  */
-function stringifyXML(obj, opts) {
-    xml2jsBuilderSettings.rootName = (opts || {}).rootName;
-    var builder = new xml2js.Builder(xml2jsBuilderSettings);
+function stringifyXML(obj, opts = {}) {
+    var _a;
+    xml2jsBuilderSettings.rootName = opts.rootName;
+    xml2jsBuilderSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
+    const builder = new xml2js.Builder(xml2jsBuilderSettings);
     return builder.buildObject(obj);
 }
 /**
  * Converts given XML string into JSON
- * @param str String containing the XML content to be parsed into JSON
- * @param opts Options that govern the parsing of given xml string
- * `includeRoot` indicates whether the root element is to be included or not in the output
+ * @param str - String containing the XML content to be parsed into JSON
+ * @param opts - Options that govern the parsing of given xml string
  */
-function parseXML(str, opts) {
-    xml2jsParserSettings.explicitRoot = !!(opts && opts.includeRoot);
-    var xmlParser = new xml2js.Parser(xml2jsParserSettings);
-    return new Promise(function (resolve, reject) {
+function parseXML(str, opts = {}) {
+    var _a;
+    xml2jsParserSettings.explicitRoot = !!opts.includeRoot;
+    xml2jsParserSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
+    const xmlParser = new xml2js.Parser(xml2jsParserSettings);
+    return new Promise((resolve, reject) => {
         if (!str) {
             reject(new Error("Document is empty"));
         }
         else {
-            xmlParser.parseString(str, function (err, res) {
+            xmlParser.parseString(str, (err, res) => {
                 if (err) {
                     reject(err);
                 }
@@ -53965,16 +56376,16 @@ function parseXML(str, opts) {
  * Create a new serialization RequestPolicyCreator that will serialized HTTP request bodies as they
  * pass through the HTTP pipeline.
  */
-function deserializationPolicy(deserializationContentTypes) {
+function deserializationPolicy(deserializationContentTypes, parsingOptions) {
     return {
-        create: function (nextPolicy, options) {
-            return new DeserializationPolicy(nextPolicy, deserializationContentTypes, options);
+        create: (nextPolicy, options) => {
+            return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);
         }
     };
 }
-var defaultJsonContentTypes = ["application/json", "text/json"];
-var defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
-var DefaultDeserializationOptions = {
+const defaultJsonContentTypes = ["application/json", "text/json"];
+const defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
+const DefaultDeserializationOptions = {
     expectedContentTypes: {
         json: defaultJsonContentTypes,
         xml: defaultXmlContentTypes
@@ -53984,36 +56395,28 @@ var DefaultDeserializationOptions = {
  * A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the
  * HTTP pipeline.
  */
-var DeserializationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DeserializationPolicy, _super);
-    function DeserializationPolicy(nextPolicy, deserializationContentTypes, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.jsonContentTypes =
+class DeserializationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions = {}) {
+        var _a;
+        super(nextPolicy, requestPolicyOptions);
+        this.jsonContentTypes =
             (deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;
-        _this.xmlContentTypes =
+        this.xmlContentTypes =
             (deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;
-        return _this;
+        this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
     }
-    DeserializationPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy
-                        .sendRequest(request)
-                        .then(function (response) {
-                        return deserializeResponseBody(_this.jsonContentTypes, _this.xmlContentTypes, response);
-                    })];
-            });
-        });
-    };
-    return DeserializationPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        return this._nextPolicy.sendRequest(request).then((response) => deserializeResponseBody(this.jsonContentTypes, this.xmlContentTypes, response, {
+            xmlCharKey: this.xmlCharKey
+        }));
+    }
+}
 function getOperationResponse(parsedResponse) {
-    var result;
-    var request = parsedResponse.request;
-    var operationSpec = request.operationSpec;
+    let result;
+    const request = parsedResponse.request;
+    const operationSpec = request.operationSpec;
     if (operationSpec) {
-        var operationResponseGetter = request.operationResponseGetter;
+        const operationResponseGetter = request.operationResponseGetter;
         if (!operationResponseGetter) {
             result = operationSpec.responses[parsedResponse.status];
         }
@@ -54024,8 +56427,8 @@ function getOperationResponse(parsedResponse) {
     return result;
 }
 function shouldDeserializeResponse(parsedResponse) {
-    var shouldDeserialize = parsedResponse.request.shouldDeserialize;
-    var result;
+    const shouldDeserialize = parsedResponse.request.shouldDeserialize;
+    let result;
     if (shouldDeserialize === undefined) {
         result = true;
     }
@@ -54037,69 +56440,34 @@ function shouldDeserializeResponse(parsedResponse) {
     }
     return result;
 }
-function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
-    return parse(jsonContentTypes, xmlContentTypes, response).then(function (parsedResponse) {
+function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options = {}) {
+    var _a, _b, _c;
+    const updatedOptions = {
+        rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
+        includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
+        xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
+    };
+    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then((parsedResponse) => {
         if (!shouldDeserializeResponse(parsedResponse)) {
             return parsedResponse;
         }
-        var operationSpec = parsedResponse.request.operationSpec;
+        const operationSpec = parsedResponse.request.operationSpec;
         if (!operationSpec || !operationSpec.responses) {
             return parsedResponse;
         }
-        var responseSpec = getOperationResponse(parsedResponse);
-        var expectedStatusCodes = Object.keys(operationSpec.responses);
-        var hasNoExpectedStatusCodes = expectedStatusCodes.length === 0 ||
-            (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default");
-        var isExpectedStatusCode = hasNoExpectedStatusCodes
-            ? 200 <= parsedResponse.status && parsedResponse.status < 300
-            : !!responseSpec;
-        // There is no operation response spec for current status code.
-        // So, treat it as an error case and use the default response spec to deserialize the response.
-        if (!isExpectedStatusCode) {
-            var defaultResponseSpec = operationSpec.responses.default;
-            if (!defaultResponseSpec) {
-                return parsedResponse;
-            }
-            var defaultBodyMapper = defaultResponseSpec.bodyMapper;
-            var defaultHeadersMapper = defaultResponseSpec.headersMapper;
-            var initialErrorMessage = isStreamOperation(operationSpec)
-                ? "Unexpected status code: " + parsedResponse.status
-                : parsedResponse.bodyAsText;
-            var error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
-            try {
-                // If error response has a body, try to extract error code & message from it
-                // Then try to deserialize it using default body mapper
-                if (parsedResponse.parsedBody) {
-                    var parsedBody = parsedResponse.parsedBody;
-                    var internalError = parsedBody.error || parsedBody;
-                    error.code = internalError.code;
-                    if (internalError.message) {
-                        error.message = internalError.message;
-                    }
-                    if (defaultBodyMapper) {
-                        var valueToDeserialize = parsedBody;
-                        if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
-                            valueToDeserialize =
-                                typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
-                        }
-                        error.response.parsedBody = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
-                    }
-                }
-                // If error response has headers, try to deserialize it using default header mapper
-                if (parsedResponse.headers && defaultHeadersMapper) {
-                    error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
-                }
-            }
-            catch (defaultError) {
-                error.message = "Error \"" + defaultError.message + "\" occurred in deserializing the responseBody - \"" + parsedResponse.bodyAsText + "\" for the default response.";
-            }
+        const responseSpec = getOperationResponse(parsedResponse);
+        const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec);
+        if (error) {
             throw error;
         }
+        else if (shouldReturnResponse) {
+            return parsedResponse;
+        }
         // An operation response spec does exist for current status code, so
         // use it to deserialize the response.
         if (responseSpec) {
             if (responseSpec.bodyMapper) {
-                var valueToDeserialize = parsedResponse.parsedBody;
+                let valueToDeserialize = parsedResponse.parsedBody;
                 if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof valueToDeserialize === "object"
@@ -54107,10 +56475,10 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
                             : [];
                 }
                 try {
-                    parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody");
+                    parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options);
                 }
-                catch (error) {
-                    var restError = new RestError("Error " + error + " occurred in deserializing the responseBody - " + parsedResponse.bodyAsText, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+                catch (innerError) {
+                    const restError = new RestError(`Error ${innerError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
                     throw restError;
                 }
             }
@@ -54119,35 +56487,106 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response) {
                 parsedResponse.parsedBody = response.status >= 200 && response.status < 300;
             }
             if (responseSpec.headersMapper) {
-                parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
+                parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders", options);
             }
         }
         return parsedResponse;
     });
 }
-function parse(jsonContentTypes, xmlContentTypes, operationResponse) {
-    var errorHandler = function (err) {
-        var msg = "Error \"" + err + "\" occurred while parsing the response body - " + operationResponse.bodyAsText + ".";
-        var errCode = err.code || RestError.PARSE_ERROR;
-        var e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
+function isOperationSpecEmpty(operationSpec) {
+    const expectedStatusCodes = Object.keys(operationSpec.responses);
+    return (expectedStatusCodes.length === 0 ||
+        (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"));
+}
+function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
+    var _a;
+    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
+    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
+        ? isSuccessByStatus
+        : !!responseSpec;
+    if (isExpectedStatusCode) {
+        if (responseSpec) {
+            if (!responseSpec.isError) {
+                return { error: null, shouldReturnResponse: false };
+            }
+        }
+        else {
+            return { error: null, shouldReturnResponse: false };
+        }
+    }
+    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
+    const streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
+        parsedResponse.request.streamResponseBody;
+    const initialErrorMessage = streaming
+        ? `Unexpected status code: ${parsedResponse.status}`
+        : parsedResponse.bodyAsText;
+    const error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+    // If the item failed but there's no error spec or default spec to deserialize the error,
+    // we should fail so we just throw the parsed response
+    if (!errorResponseSpec) {
+        throw error;
+    }
+    const defaultBodyMapper = errorResponseSpec.bodyMapper;
+    const defaultHeadersMapper = errorResponseSpec.headersMapper;
+    try {
+        // If error response has a body, try to deserialize it using default body mapper.
+        // Then try to extract error code & message from it
+        if (parsedResponse.parsedBody) {
+            const parsedBody = parsedResponse.parsedBody;
+            let parsedError;
+            if (defaultBodyMapper) {
+                let valueToDeserialize = parsedBody;
+                if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
+                    valueToDeserialize =
+                        typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
+                }
+                parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
+            }
+            const internalError = parsedBody.error || parsedError || parsedBody;
+            error.code = internalError.code;
+            if (internalError.message) {
+                error.message = internalError.message;
+            }
+            if (defaultBodyMapper) {
+                error.response.parsedBody = parsedError;
+            }
+        }
+        // If error response has headers, try to deserialize it using default header mapper
+        if (parsedResponse.headers && defaultHeadersMapper) {
+            error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.rawHeaders(), "operationRes.parsedHeaders");
+        }
+    }
+    catch (defaultError) {
+        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`;
+    }
+    return { error, shouldReturnResponse: false };
+}
+function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
+    var _a;
+    const errorHandler = (err) => {
+        const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;
+        const errCode = err.code || RestError.PARSE_ERROR;
+        const e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
         return Promise.reject(e);
     };
-    if (!operationResponse.request.streamResponseBody && operationResponse.bodyAsText) {
-        var text_1 = operationResponse.bodyAsText;
-        var contentType = operationResponse.headers.get("Content-Type") || "";
-        var contentComponents = !contentType
+    const streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
+        operationResponse.request.streamResponseBody;
+    if (!streaming && operationResponse.bodyAsText) {
+        const text = operationResponse.bodyAsText;
+        const contentType = operationResponse.headers.get("Content-Type") || "";
+        const contentComponents = !contentType
             ? []
-            : contentType.split(";").map(function (component) { return component.toLowerCase(); });
+            : contentType.split(";").map((component) => component.toLowerCase());
         if (contentComponents.length === 0 ||
-            contentComponents.some(function (component) { return jsonContentTypes.indexOf(component) !== -1; })) {
-            return new Promise(function (resolve) {
-                operationResponse.parsedBody = JSON.parse(text_1);
+            contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {
+            return new Promise((resolve) => {
+                operationResponse.parsedBody = JSON.parse(text);
                 resolve(operationResponse);
             }).catch(errorHandler);
         }
-        else if (contentComponents.some(function (component) { return xmlContentTypes.indexOf(component) !== -1; })) {
-            return parseXML(text_1)
-                .then(function (body) {
+        else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {
+            return parseXML(text, opts)
+                .then((body) => {
                 operationResponse.parsedBody = body;
                 return operationResponse;
             })
@@ -54159,11 +56598,11 @@ function parse(jsonContentTypes, xmlContentTypes, operationResponse) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var DEFAULT_CLIENT_RETRY_COUNT = 3;
+const DEFAULT_CLIENT_RETRY_COUNT = 3;
 // intervals are in ms
-var DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
-var DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
-var DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
+const DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
+const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
+const DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
 function isNumber(n) {
     return typeof n === "number";
 }
@@ -54171,10 +56610,10 @@ function isNumber(n) {
  * @internal
  * Determines if the operation should be retried.
  *
- * @param {number} retryLimit Specifies the max number of retries.
- * @param {(response?: HttpOperationResponse, error?: RetryError) => boolean} predicate Initial chekck on whether to retry based on given responses or errors
- * @param {RetryData} retryData  The retry data.
- * @return {boolean} True if the operation qualifies for a retry; false otherwise.
+ * @param retryLimit - Specifies the max number of retries.
+ * @param predicate - Initial chekck on whether to retry based on given responses or errors
+ * @param retryData -  The retry data.
+ * @returns True if the operation qualifies for a retry; false otherwise.
  */
 function shouldRetry(retryLimit, predicate, retryData, response, error) {
     if (!predicate(response, error)) {
@@ -54186,12 +56625,11 @@ function shouldRetry(retryLimit, predicate, retryData, response, error) {
  * @internal
  * Updates the retry data for the next attempt.
  *
- * @param {RetryPolicyOptions} retryOptions specifies retry interval, and its lower bound and upper bound.
- * @param {RetryData} [retryData]  The retry data.
- * @param {RetryError} [err] The operation"s error, if any.
+ * @param retryOptions - specifies retry interval, and its lower bound and upper bound.
+ * @param retryData -  The retry data.
+ * @param err - The operation"s error, if any.
  */
-function updateRetryData(retryOptions, retryData, err) {
-    if (retryData === void 0) { retryData = { retryCount: 0, retryInterval: 0 }; }
+function updateRetryData(retryOptions, retryData = { retryCount: 0, retryInterval: 0 }, err) {
     if (err) {
         if (retryData.error) {
             err.innerError = retryData.error;
@@ -54201,18 +56639,72 @@ function updateRetryData(retryOptions, retryData, err) {
     // Adjust retry count
     retryData.retryCount++;
     // Adjust retry interval
-    var incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
-    var boundedRandDelta = retryOptions.retryInterval * 0.8 +
+    let incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
+    const boundedRandDelta = retryOptions.retryInterval * 0.8 +
         Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));
     incrementDelta *= boundedRandDelta;
     retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);
     return retryData;
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if the value is not null or undefined.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+
+// Copyright (c) Microsoft Corporation.
+const StandardAbortMessage = "The operation was aborted.";
+/**
+ * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.
+ * @param delayInMs - The number of milliseconds to be delayed.
+ * @param value - The value to be resolved with after a timeout of t milliseconds.
+ * @param options - The options for delay - currently abort options
+ *   @param abortSignal - The abortSignal associated with containing operation.
+ *   @param abortErrorMsg - The abort error message associated with containing operation.
+ * @returns - Resolved promise
+ */
+function delay(delayInMs, value, options) {
+    return new Promise((resolve, reject) => {
+        let timer = undefined;
+        let onAborted = undefined;
+        const rejectOnAbort = () => {
+            return reject(new abortController.AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));
+        };
+        const removeListeners = () => {
+            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {
+                options.abortSignal.removeEventListener("abort", onAborted);
+            }
+        };
+        onAborted = () => {
+            if (isDefined(timer)) {
+                clearTimeout(timer);
+            }
+            removeListeners();
+            return rejectOnAbort();
+        };
+        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {
+            return rejectOnAbort();
+        }
+        timer = setTimeout(() => {
+            removeListeners();
+            resolve(value);
+        }, delayInMs);
+        if (options === null || options === void 0 ? void 0 : options.abortSignal) {
+            options.abortSignal.addEventListener("abort", onAborted);
+        }
+    });
+}
+
 // Copyright (c) Microsoft Corporation.
 function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);
         }
     };
@@ -54220,287 +56712,258 @@ function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
 (function (RetryMode) {
     RetryMode[RetryMode["Exponential"] = 0] = "Exponential";
 })(exports.RetryMode || (exports.RetryMode = {}));
-var DefaultRetryOptions = {
+const DefaultRetryOptions = {
     maxRetries: DEFAULT_CLIENT_RETRY_COUNT,
     retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,
     maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL
 };
 /**
- * @class
  * Instantiates a new "ExponentialRetryPolicyFilter" instance.
  */
-var ExponentialRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ExponentialRetryPolicy, _super);
+class ExponentialRetryPolicy extends BaseRequestPolicy {
     /**
-     * @constructor
-     * @param {RequestPolicy} nextPolicy The next RequestPolicy in the pipeline chain.
-     * @param {RequestPolicyOptions} options The options for this RequestPolicy.
-     * @param {number} [retryCount]        The client retry count.
-     * @param {number} [retryInterval]     The client retry interval, in milliseconds.
-     * @param {number} [minRetryInterval]  The minimum retry interval, in milliseconds.
-     * @param {number} [maxRetryInterval]  The maximum retry interval, in milliseconds.
+     * @param nextPolicy - The next RequestPolicy in the pipeline chain.
+     * @param options - The options for this RequestPolicy.
+     * @param retryCount - The client retry count.
+     * @param retryInterval - The client retry interval, in milliseconds.
+     * @param minRetryInterval - The minimum retry interval, in milliseconds.
+     * @param maxRetryInterval - The maximum retry interval, in milliseconds.
      */
-    function ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+    constructor(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    ExponentialRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return retry(_this, request, response); })
-            .catch(function (error) { return retry(_this, request, error.response, undefined, error); });
-    };
-    return ExponentialRetryPolicy;
-}(BaseRequestPolicy));
-function retry(policy, request, response, retryData, requestError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(response) {
-            var statusCode = response === null || response === void 0 ? void 0 : response.status;
-            if (statusCode === undefined ||
-                (statusCode < 500 && statusCode !== 408) ||
-                statusCode === 501 ||
-                statusCode === 505) {
-                return false;
-            }
-            return true;
+            .then((response) => retry(this, request, response))
+            .catch((error) => retry(this, request, error.response, undefined, error));
+    }
+}
+async function retry(policy, request, response, retryData, requestError) {
+    function shouldPolicyRetry(responseParam) {
+        const statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
+        if (statusCode === 503 && (response === null || response === void 0 ? void 0 : response.headers.get(Constants.HeaderConstants.RETRY_AFTER))) {
+            return false;
         }
-        var isAborted, res, err_1, err;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData({
-                        retryInterval: policy.retryInterval,
-                        minRetryInterval: 0,
-                        maxRetryInterval: policy.maxRetryInterval
-                    }, retryData, requestError);
-                    isAborted = request.abortSignal && request.abortSignal.aborted;
-                    if (!(!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response))) return [3 /*break*/, 6];
-                    logger.info("Retrying request in " + retryData.retryInterval);
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 4, , 5]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [4 /*yield*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    res = _a.sent();
-                    return [2 /*return*/, retry(policy, request, res, retryData)];
-                case 4:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry(policy, request, response, retryData, err_1)];
-                case 5: return [3 /*break*/, 7];
-                case 6:
-                    if (isAborted || requestError || !response) {
-                        err = retryData.error ||
-                            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
-                        throw err;
-                    }
-                    else {
-                        return [2 /*return*/, response];
-                    }
-                case 7: return [2 /*return*/];
-            }
-        });
-    });
+        if (statusCode === undefined ||
+            (statusCode < 500 && statusCode !== 408) ||
+            statusCode === 501 ||
+            statusCode === 505) {
+            return false;
+        }
+        return true;
+    }
+    retryData = updateRetryData({
+        retryInterval: policy.retryInterval,
+        minRetryInterval: 0,
+        maxRetryInterval: policy.maxRetryInterval
+    }, retryData, requestError);
+    const isAborted = request.abortSignal && request.abortSignal.aborted;
+    if (!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response)) {
+        logger.info(`Retrying request in ${retryData.retryInterval}`);
+        try {
+            await delay(retryData.retryInterval);
+            const res = await policy._nextPolicy.sendRequest(request.clone());
+            return retry(policy, request, res, retryData);
+        }
+        catch (err) {
+            return retry(policy, request, response, retryData, err);
+        }
+    }
+    else if (isAborted || requestError || !response) {
+        // If the operation failed in the end, return all errors instead of just the last one
+        const err = retryData.error ||
+            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
+        throw err;
+    }
+    else {
+        return response;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
-function generateClientRequestIdPolicy(requestIdHeaderName) {
-    if (requestIdHeaderName === void 0) { requestIdHeaderName = "x-ms-client-request-id"; }
+function generateClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
         }
     };
 }
-var GenerateClientRequestIdPolicy = /** @class */ (function (_super) {
-    tslib.__extends(GenerateClientRequestIdPolicy, _super);
-    function GenerateClientRequestIdPolicy(nextPolicy, options, _requestIdHeaderName) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._requestIdHeaderName = _requestIdHeaderName;
-        return _this;
+class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _requestIdHeaderName) {
+        super(nextPolicy, options);
+        this._requestIdHeaderName = _requestIdHeaderName;
     }
-    GenerateClientRequestIdPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         if (!request.headers.contains(this._requestIdHeaderName)) {
             request.headers.set(this._requestIdHeaderName, request.requestId);
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return GenerateClientRequestIdPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function getDefaultUserAgentKey() {
     return Constants.HeaderConstants.USER_AGENT;
 }
 function getPlatformSpecificData() {
-    var runtimeInfo = {
+    const runtimeInfo = {
         key: "Node",
         value: process.version
     };
-    var osInfo = {
+    const osInfo = {
         key: "OS",
-        value: "(" + os.arch() + "-" + os.type() + "-" + os.release() + ")"
+        value: `(${os.arch()}-${os.type()}-${os.release()})`
     };
     return [runtimeInfo, osInfo];
 }
 
 // Copyright (c) Microsoft Corporation.
 function getRuntimeInfo() {
-    var msRestRuntime = {
+    const msRestRuntime = {
         key: "core-http",
         value: Constants.coreHttpVersion
     };
     return [msRestRuntime];
 }
-function getUserAgentString(telemetryInfo, keySeparator, valueSeparator) {
-    if (keySeparator === void 0) { keySeparator = " "; }
-    if (valueSeparator === void 0) { valueSeparator = "/"; }
+function getUserAgentString(telemetryInfo, keySeparator = " ", valueSeparator = "/") {
     return telemetryInfo
-        .map(function (info) {
-        var value = info.value ? "" + valueSeparator + info.value : "";
-        return "" + info.key + value;
+        .map((info) => {
+        const value = info.value ? `${valueSeparator}${info.value}` : "";
+        return `${info.key}${value}`;
     })
         .join(keySeparator);
 }
-var getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
+const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
 function getDefaultUserAgentValue() {
-    var runtimeInfo = getRuntimeInfo();
-    var platformSpecificData = getPlatformSpecificData();
-    var userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
+    const runtimeInfo = getRuntimeInfo();
+    const platformSpecificData = getPlatformSpecificData();
+    const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
     return userAgent;
 }
 function userAgentPolicy(userAgentData) {
-    var key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
+    const key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
         ? getDefaultUserAgentKey()
         : userAgentData.key;
-    var value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
+    const value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
         ? getDefaultUserAgentValue()
         : userAgentData.value;
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new UserAgentPolicy(nextPolicy, options, key, value);
         }
     };
 }
-var UserAgentPolicy = /** @class */ (function (_super) {
-    tslib.__extends(UserAgentPolicy, _super);
-    function UserAgentPolicy(_nextPolicy, _options, headerKey, headerValue) {
-        var _this = _super.call(this, _nextPolicy, _options) || this;
-        _this._nextPolicy = _nextPolicy;
-        _this._options = _options;
-        _this.headerKey = headerKey;
-        _this.headerValue = headerValue;
-        return _this;
+class UserAgentPolicy extends BaseRequestPolicy {
+    constructor(_nextPolicy, _options, headerKey, headerValue) {
+        super(_nextPolicy, _options);
+        this._nextPolicy = _nextPolicy;
+        this._options = _options;
+        this.headerKey = headerKey;
+        this.headerValue = headerValue;
     }
-    UserAgentPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         this.addUserAgentHeader(request);
         return this._nextPolicy.sendRequest(request);
-    };
-    UserAgentPolicy.prototype.addUserAgentHeader = function (request) {
+    }
+    addUserAgentHeader(request) {
         if (!request.headers) {
             request.headers = new HttpHeaders();
         }
         if (!request.headers.get(this.headerKey) && this.headerValue) {
             request.headers.set(this.headerKey, this.headerValue);
         }
-    };
-    return UserAgentPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultRedirectOptions = {
+/**
+ * Methods that are allowed to follow redirects 301 and 302
+ */
+const allowedRedirect = ["GET", "HEAD"];
+const DefaultRedirectOptions = {
     handleRedirects: true,
     maxRetries: 20
 };
-function redirectPolicy(maximumRetries) {
-    if (maximumRetries === void 0) { maximumRetries = 20; }
+function redirectPolicy(maximumRetries = 20) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RedirectPolicy(nextPolicy, options, maximumRetries);
         }
     };
 }
-var RedirectPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RedirectPolicy, _super);
-    function RedirectPolicy(nextPolicy, options, maxRetries) {
-        if (maxRetries === void 0) { maxRetries = 20; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.maxRetries = maxRetries;
-        return _this;
+class RedirectPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, maxRetries = 20) {
+        super(nextPolicy, options);
+        this.maxRetries = maxRetries;
     }
-    RedirectPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request)
-            .then(function (response) { return handleRedirect(_this, response, 0); });
-    };
-    return RedirectPolicy;
-}(BaseRequestPolicy));
+            .then((response) => handleRedirect(this, response, 0));
+    }
+}
 function handleRedirect(policy, response, currentRetries) {
-    var request = response.request, status = response.status;
-    var locationHeader = response.headers.get("location");
+    const { request, status } = response;
+    const locationHeader = response.headers.get("location");
     if (locationHeader &&
-        (status === 300 || status === 307 || (status === 303 && request.method === "POST")) &&
+        (status === 300 ||
+            (status === 301 && allowedRedirect.includes(request.method)) ||
+            (status === 302 && allowedRedirect.includes(request.method)) ||
+            (status === 303 && request.method === "POST") ||
+            status === 307) &&
         (!policy.maxRetries || currentRetries < policy.maxRetries)) {
-        var builder = URLBuilder.parse(request.url);
+        const builder = URLBuilder.parse(request.url);
         builder.setPath(locationHeader);
         request.url = builder.toString();
         // POST request with Status code 303 should be converted into a
         // redirected GET request if the redirect url is present in the location header
         if (status === 303) {
             request.method = "GET";
+            delete request.body;
         }
         return policy._nextPolicy
             .sendRequest(request)
-            .then(function (res) { return handleRedirect(policy, res, currentRetries + 1); });
+            .then((res) => handleRedirect(policy, res, currentRetries + 1));
     }
     return Promise.resolve(response);
 }
 
 // Copyright (c) Microsoft Corporation.
-function rpRegistrationPolicy(retryTimeout) {
-    if (retryTimeout === void 0) { retryTimeout = 30; }
+function rpRegistrationPolicy(retryTimeout = 30) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);
         }
     };
 }
-var RPRegistrationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RPRegistrationPolicy, _super);
-    function RPRegistrationPolicy(nextPolicy, options, _retryTimeout) {
-        if (_retryTimeout === void 0) { _retryTimeout = 30; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._retryTimeout = _retryTimeout;
-        return _this;
+class RPRegistrationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _retryTimeout = 30) {
+        super(nextPolicy, options);
+        this._retryTimeout = _retryTimeout;
     }
-    RPRegistrationPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return registerIfNeeded(_this, request, response); });
-    };
-    return RPRegistrationPolicy;
-}(BaseRequestPolicy));
+            .then((response) => registerIfNeeded(this, request, response));
+    }
+}
 function registerIfNeeded(policy, request, response) {
     if (response.status === 409) {
-        var rpName = checkRPNotRegisteredError(response.bodyAsText);
+        const rpName = checkRPNotRegisteredError(response.bodyAsText);
         if (rpName) {
-            var urlPrefix = extractSubscriptionUrl(request.url);
+            const urlPrefix = extractSubscriptionUrl(request.url);
             return (registerRP(policy, urlPrefix, rpName, request)
                 // Autoregistration of ${provider} failed for some reason. We will not return this error
                 // instead will return the initial response with 409 status code back to the user.
                 // do nothing here as we are returning the original response at the end of this method.
-                .catch(function () { return false; })
-                .then(function (registrationStatus) {
+                .catch(() => false)
+                .then((registrationStatus) => {
                 if (registrationStatus) {
                     // Retry the original request. We have to change the x-ms-client-request-id
                     // otherwise Azure endpoint will return the initial 409 (cached) response.
@@ -54515,13 +56978,12 @@ function registerIfNeeded(policy, request, response) {
 }
 /**
  * Reuses the headers of the original request and url (if specified).
- * @param {WebResourceLike} originalRequest The original request
- * @param {boolean} reuseUrlToo Should the url from the original request be reused as well. Default false.
- * @returns {object} A new request object with desired headers.
+ * @param originalRequest - The original request
+ * @param reuseUrlToo - Should the url from the original request be reused as well. Default false.
+ * @returns A new request object with desired headers.
  */
-function getRequestEssentials(originalRequest, reuseUrlToo) {
-    if (reuseUrlToo === void 0) { reuseUrlToo = false; }
-    var reqOptions = originalRequest.clone();
+function getRequestEssentials(originalRequest, reuseUrlToo = false) {
+    const reqOptions = originalRequest.clone();
     if (reuseUrlToo) {
         reqOptions.url = originalRequest.url;
     }
@@ -54535,11 +56997,11 @@ function getRequestEssentials(originalRequest, reuseUrlToo) {
 /**
  * Validates the error code and message associated with 409 response status code. If it matches to that of
  * RP not registered then it returns the name of the RP else returns undefined.
- * @param {string} body The response body received after making the original request.
- * @returns {string} The name of the RP if condition is satisfied else undefined.
+ * @param body - The response body received after making the original request.
+ * @returns The name of the RP if condition is satisfied else undefined.
  */
 function checkRPNotRegisteredError(body) {
-    var result, responseBody;
+    let result, responseBody;
     if (body) {
         try {
             responseBody = JSON.parse(body);
@@ -54552,7 +57014,7 @@ function checkRPNotRegisteredError(body) {
             responseBody.error.message &&
             responseBody.error.code &&
             responseBody.error.code === "MissingSubscriptionRegistration") {
-            var matchRes = responseBody.error.message.match(/.*'(.*)'/i);
+            const matchRes = responseBody.error.message.match(/.*'(.*)'/i);
             if (matchRes) {
                 result = matchRes.pop();
             }
@@ -54563,362 +57025,306 @@ function checkRPNotRegisteredError(body) {
 /**
  * Extracts the first part of the URL, just after subscription:
  * https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
- * @param {string} url The original request url
- * @returns {string} The url prefix as explained above.
+ * @param url - The original request url
+ * @returns The url prefix as explained above.
  */
 function extractSubscriptionUrl(url) {
-    var result;
-    var matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
+    let result;
+    const matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
     if (matchRes && matchRes[0]) {
         result = matchRes[0];
     }
     else {
-        throw new Error("Unable to extract subscriptionId from the given url - " + url + ".");
+        throw new Error(`Unable to extract subscriptionId from the given url - ${url}.`);
     }
     return result;
 }
 /**
  * Registers the given provider.
- * @param {RPRegistrationPolicy} policy The RPRegistrationPolicy this function is being called against.
- * @param {string} urlPrefix https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
- * @param {string} provider The provider name to be registered.
- * @param {WebResourceLike} originalRequest The original request sent by the user that returned a 409 response
+ * @param policy - The RPRegistrationPolicy this function is being called against.
+ * @param urlPrefix - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/
+ * @param provider - The provider name to be registered.
+ * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @param {registrationCallback} callback The callback that handles the RP registration
  */
-function registerRP(policy, urlPrefix, provider, originalRequest) {
-    var postUrl = urlPrefix + "providers/" + provider + "/register?api-version=2016-02-01";
-    var getUrl = urlPrefix + "providers/" + provider + "?api-version=2016-02-01";
-    var reqOptions = getRequestEssentials(originalRequest);
+async function registerRP(policy, urlPrefix, provider, originalRequest) {
+    const postUrl = `${urlPrefix}providers/${provider}/register?api-version=2016-02-01`;
+    const getUrl = `${urlPrefix}providers/${provider}?api-version=2016-02-01`;
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.method = "POST";
     reqOptions.url = postUrl;
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (response) {
-        if (response.status !== 200) {
-            throw new Error("Autoregistration of " + provider + " failed. Please try registering manually.");
-        }
-        return getRegistrationStatus(policy, getUrl, originalRequest);
-    });
+    const response = await policy._nextPolicy.sendRequest(reqOptions);
+    if (response.status !== 200) {
+        throw new Error(`Autoregistration of ${provider} failed. Please try registering manually.`);
+    }
+    return getRegistrationStatus(policy, getUrl, originalRequest);
 }
 /**
  * Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.
  * Polling will happen till the registrationState property of the response body is "Registered".
- * @param {RPRegistrationPolicy} policy The RPRegistrationPolicy this function is being called against.
- * @param {string} url The request url for polling
- * @param {WebResourceLike} originalRequest The original request sent by the user that returned a 409 response
+ * @param policy - The RPRegistrationPolicy this function is being called against.
+ * @param url - The request url for polling
+ * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @returns {Promise<boolean>} True if RP Registration is successful.
+ * @returns True if RP Registration is successful.
  */
-function getRegistrationStatus(policy, url, originalRequest) {
-    var reqOptions = getRequestEssentials(originalRequest);
+async function getRegistrationStatus(policy, url, originalRequest) {
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.url = url;
     reqOptions.method = "GET";
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (res) {
-        var obj = res.parsedBody;
-        if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
-            return true;
+    const res = await policy._nextPolicy.sendRequest(reqOptions);
+    const obj = res.parsedBody;
+    if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
+        return true;
+    }
+    else {
+        await delay(policy._retryTimeout * 1000);
+        return getRegistrationStatus(policy, url, originalRequest);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Default options for the cycler if none are provided
+const DEFAULT_CYCLER_OPTIONS = {
+    forcedRefreshWindowInMs: 1000,
+    retryIntervalInMs: 3000,
+    refreshWindowInMs: 1000 * 60 * 2 // Start refreshing 2m before expiry
+};
+/**
+ * Converts an an unreliable access token getter (which may resolve with null)
+ * into an AccessTokenGetter by retrying the unreliable getter in a regular
+ * interval.
+ *
+ * @param getAccessToken - a function that produces a promise of an access
+ * token that may fail by returning null
+ * @param retryIntervalInMs - the time (in milliseconds) to wait between retry
+ * attempts
+ * @param timeoutInMs - the timestamp after which the refresh attempt will fail,
+ * throwing an exception
+ * @returns - a promise that, if it resolves, will resolve with an access token
+ */
+async function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
+    // This wrapper handles exceptions gracefully as long as we haven't exceeded
+    // the timeout.
+    async function tryGetAccessToken() {
+        if (Date.now() < timeoutInMs) {
+            try {
+                return await getAccessToken();
+            }
+            catch (_a) {
+                return null;
+            }
         }
         else {
-            return delay(policy._retryTimeout * 1000)
-                .then(function () { return getRegistrationStatus(policy, url, originalRequest); });
+            const finalToken = await getAccessToken();
+            // Timeout is up, so throw if it's still null
+            if (finalToken === null) {
+                throw new Error("Failed to refresh access token.");
+            }
+            return finalToken;
         }
-    });
+    }
+    let token = await tryGetAccessToken();
+    while (token === null) {
+        await delay(retryIntervalInMs);
+        token = await tryGetAccessToken();
+    }
+    return token;
 }
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
 /**
- * Defines the default token refresh buffer duration.
- */
-var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
-/**
- * Provides an {@link AccessTokenCache} implementation which clears
- * the cached {@link AccessToken}'s after the expiresOnTimestamp has
- * passed.
- */
-var ExpiringAccessTokenCache = /** @class */ (function () {
-    /**
-     * Constructs an instance of {@link ExpiringAccessTokenCache} with
-     * an optional expiration buffer time.
-     */
-    function ExpiringAccessTokenCache(tokenRefreshBufferMs) {
-        if (tokenRefreshBufferMs === void 0) { tokenRefreshBufferMs = TokenRefreshBufferMs; }
-        this.cachedToken = undefined;
-        this.tokenRefreshBufferMs = tokenRefreshBufferMs;
-    }
-    ExpiringAccessTokenCache.prototype.setCachedToken = function (accessToken) {
-        this.cachedToken = accessToken;
-    };
-    ExpiringAccessTokenCache.prototype.getCachedToken = function () {
-        if (this.cachedToken &&
-            Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
-            this.cachedToken = undefined;
-        }
-        return this.cachedToken;
-    };
-    return ExpiringAccessTokenCache;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
- */
-var AccessTokenRefresher = /** @class */ (function () {
-    function AccessTokenRefresher(credential, scopes, requiredMillisecondsBeforeNewRefresh) {
-        if (requiredMillisecondsBeforeNewRefresh === void 0) { requiredMillisecondsBeforeNewRefresh = 30000; }
-        this.credential = credential;
-        this.scopes = scopes;
-        this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
-        this.lastCalled = 0;
-    }
-    /**
-     * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
-     * that we are ready for a new refresh.
-     *
-     * @returns {boolean}
-     */
-    AccessTokenRefresher.prototype.isReady = function () {
-        // We're only ready for a new refresh if the required milliseconds have passed.
-        return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
-    };
-    /**
-     * Stores the time in which it is called,
-     * then requests a new token,
-     * then sets this.promise to undefined,
-     * then returns the token.
-     * @param options getToken options
-     */
-    AccessTokenRefresher.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.lastCalled = Date.now();
-                        return [4 /*yield*/, this.credential.getToken(this.scopes, options)];
-                    case 1:
-                        token = _a.sent();
-                        this.promise = undefined;
-                        return [2 /*return*/, token || undefined];
-                }
-            });
-        });
-    };
-    /**
-     * Requests a new token if we're not currently waiting for a new token.
-     * Returns null if the required time between each call hasn't been reached.
-     * @param options getToken options
-     */
-    AccessTokenRefresher.prototype.refresh = function (options) {
-        if (!this.promise) {
-            this.promise = this.getToken(options);
-        }
-        return this.promise;
-    };
-    return AccessTokenRefresher;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * Creates a new BearerTokenAuthenticationPolicy factory.
+ * Creates a token cycler from a credential, scopes, and optional settings.
  *
- * @param credential The TokenCredential implementation that can supply the bearer token.
- * @param scopes The scopes for which the bearer token applies.
+ * A token cycler represents a way to reliably retrieve a valid access token
+ * from a TokenCredential. It will handle initializing the token, refreshing it
+ * when it nears expiration, and synchronizes refresh attempts to avoid
+ * concurrency hazards.
+ *
+ * @param credential - the underlying TokenCredential that provides the access
+ * token
+ * @param scopes - the scopes to request authorization for
+ * @param tokenCyclerOptions - optionally override default settings for the cycler
+ *
+ * @returns - a function that reliably produces a valid access token
+ */
+function createTokenCycler(credential, scopes, tokenCyclerOptions) {
+    let refreshWorker = null;
+    let token = null;
+    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
+    /**
+     * This little holder defines several predicates that we use to construct
+     * the rules of refreshing the token.
+     */
+    const cycler = {
+        /**
+         * Produces true if a refresh job is currently in progress.
+         */
+        get isRefreshing() {
+            return refreshWorker !== null;
+        },
+        /**
+         * Produces true if the cycler SHOULD refresh (we are within the refresh
+         * window and not already refreshing)
+         */
+        get shouldRefresh() {
+            var _a;
+            return (!cycler.isRefreshing &&
+                ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());
+        },
+        /**
+         * Produces true if the cycler MUST refresh (null or nearly-expired
+         * token).
+         */
+        get mustRefresh() {
+            return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());
+        }
+    };
+    /**
+     * Starts a refresh job or returns the existing job if one is already
+     * running.
+     */
+    function refresh(getTokenOptions) {
+        var _a;
+        if (!cycler.isRefreshing) {
+            // We bind `scopes` here to avoid passing it around a lot
+            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);
+            // Take advantage of promise chaining to insert an assignment to `token`
+            // before the refresh can be considered done.
+            refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, 
+            // If we don't have a token, then we should timeout immediately
+            (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())
+                .then((_token) => {
+                refreshWorker = null;
+                token = _token;
+                return token;
+            })
+                .catch((reason) => {
+                // We also should reset the refresher if we enter a failed state.  All
+                // existing awaiters will throw, but subsequent requests will start a
+                // new retry chain.
+                refreshWorker = null;
+                token = null;
+                throw reason;
+            });
+        }
+        return refreshWorker;
+    }
+    return async (tokenOptions) => {
+        //
+        // Simple rules:
+        // - If we MUST refresh, then return the refresh task, blocking
+        //   the pipeline until a token is available.
+        // - If we SHOULD refresh, then run refresh but don't return it
+        //   (we can still use the cached token).
+        // - Return the token, since it's fine if we didn't return in
+        //   step 1.
+        //
+        if (cycler.mustRefresh)
+            return refresh(tokenOptions);
+        if (cycler.shouldRefresh) {
+            refresh(tokenOptions);
+        }
+        return token;
+    };
+}
+// #endregion
+/**
+ * Creates a new factory for a RequestPolicy that applies a bearer token to
+ * the requests' `Authorization` headers.
+ *
+ * @param credential - The TokenCredential implementation that can supply the bearer token.
+ * @param scopes - The scopes for which the bearer token applies.
  */
 function bearerTokenAuthenticationPolicy(credential, scopes) {
-    var tokenCache = new ExpiringAccessTokenCache();
-    var tokenRefresher = new AccessTokenRefresher(credential, scopes, timeBetweenRefreshAttemptsInMs);
+    // This simple function encapsulates the entire process of reliably retrieving the token
+    const getToken = createTokenCycler(credential, scopes /* , options */);
+    class BearerTokenAuthenticationPolicy extends BaseRequestPolicy {
+        constructor(nextPolicy, options) {
+            super(nextPolicy, options);
+        }
+        async sendRequest(webResource) {
+            if (!webResource.url.toLowerCase().startsWith("https://")) {
+                throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");
+            }
+            const { token } = await getToken({
+                abortSignal: webResource.abortSignal,
+                tracingOptions: {
+                    tracingContext: webResource.tracingContext
+                }
+            });
+            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);
+            return this._nextPolicy.sendRequest(webResource);
+        }
+    }
     return {
-        create: function (nextPolicy, options) {
-            return new BearerTokenAuthenticationPolicy(nextPolicy, options, tokenCache, tokenRefresher);
+        create: (nextPolicy, options) => {
+            return new BearerTokenAuthenticationPolicy(nextPolicy, options);
         }
     };
 }
-/**
- * The automated token refresh will only start to happen at the
- * expiration date minus the value of timeBetweenRefreshAttemptsInMs,
- * which is by default 30 seconds.
- */
-var timeBetweenRefreshAttemptsInMs = 30000;
-/**
- *
- * Provides a RequestPolicy that can request a token from a TokenCredential
- * implementation and then apply it to the Authorization header of a request
- * as a Bearer token.
- *
- */
-var BearerTokenAuthenticationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BearerTokenAuthenticationPolicy, _super);
-    /**
-     * Creates a new BearerTokenAuthenticationPolicy object.
-     *
-     * @param nextPolicy The next RequestPolicy in the request pipeline.
-     * @param options Options for this RequestPolicy.
-     * @param credential The TokenCredential implementation that can supply the bearer token.
-     * @param scopes The scopes for which the bearer token applies.
-     * @param tokenCache The cache for the most recent AccessToken returned from the TokenCredential.
-     */
-    function BearerTokenAuthenticationPolicy(nextPolicy, options, tokenCache, tokenRefresher) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.tokenCache = tokenCache;
-        _this.tokenRefresher = tokenRefresher;
-        return _this;
-    }
-    /**
-     * Applies the Bearer token to the request through the Authorization header.
-     * @param webResource
-     */
-    BearerTokenAuthenticationPolicy.prototype.sendRequest = function (webResource) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!webResource.headers)
-                            webResource.headers = new HttpHeaders();
-                        return [4 /*yield*/, this.getToken({
-                                abortSignal: webResource.abortSignal,
-                                tracingOptions: {
-                                    spanOptions: webResource.spanOptions
-                                }
-                            })];
-                    case 1:
-                        token = _a.sent();
-                        webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, "Bearer " + token);
-                        return [2 /*return*/, this._nextPolicy.sendRequest(webResource)];
-                }
-            });
-        });
-    };
-    /**
-     * Attempts a token update if any other time related conditionals have been reached based on the tokenRefresher class.
-     */
-    BearerTokenAuthenticationPolicy.prototype.updateTokenIfNeeded = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var accessToken;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.tokenRefresher.isReady()) return [3 /*break*/, 2];
-                        return [4 /*yield*/, this.tokenRefresher.refresh(options)];
-                    case 1:
-                        accessToken = _a.sent();
-                        this.tokenCache.setCachedToken(accessToken);
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BearerTokenAuthenticationPolicy.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var accessToken;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        accessToken = this.tokenCache.getCachedToken();
-                        if (!(accessToken === undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, this.tokenRefresher.refresh(options)];
-                    case 1:
-                        // Waiting for the next refresh only if the cache is unable to retrieve the access token,
-                        // which means that it has expired, or it has never been set.
-                        accessToken = _a.sent();
-                        this.tokenCache.setCachedToken(accessToken);
-                        return [3 /*break*/, 3];
-                    case 2:
-                        // If we still have a cached access token,
-                        // And any other time related conditionals have been reached based on the tokenRefresher class,
-                        // then attempt to refresh without waiting.
-                        this.updateTokenIfNeeded(options);
-                        _a.label = 3;
-                    case 3: return [2 /*return*/, accessToken ? accessToken.token : undefined];
-                }
-            });
-        });
-    };
-    return BearerTokenAuthenticationPolicy;
-}(BaseRequestPolicy));
 
 // Copyright (c) Microsoft Corporation.
 function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);
         }
     };
 }
 /**
- * @class
- * Instantiates a new "ExponentialRetryPolicyFilter" instance.
- *
- * @constructor
- * @param {number} retryCount        The client retry count.
- * @param {number} retryInterval     The client retry interval, in milliseconds.
- * @param {number} minRetryInterval  The minimum retry interval, in milliseconds.
- * @param {number} maxRetryInterval  The maximum retry interval, in milliseconds.
+ * @param retryCount - The client retry count.
+ * @param retryInterval - The client retry interval, in milliseconds.
+ * @param minRetryInterval - The minimum retry interval, in milliseconds.
+ * @param maxRetryInterval - The maximum retry interval, in milliseconds.
  */
-var SystemErrorRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SystemErrorRetryPolicy, _super);
-    function SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.minRetryInterval = isNumber(minRetryInterval)
+class SystemErrorRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.minRetryInterval = isNumber(minRetryInterval)
             ? minRetryInterval
             : DEFAULT_CLIENT_MIN_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    SystemErrorRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .catch(function (error) { return retry$1(_this, request, error.response, error); });
-    };
-    return SystemErrorRetryPolicy;
-}(BaseRequestPolicy));
-function retry$1(policy, request, operationResponse, err, retryData) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(_response, error) {
-            if (error &&
-                error.code &&
-                (error.code === "ETIMEDOUT" ||
-                    error.code === "ESOCKETTIMEDOUT" ||
-                    error.code === "ECONNREFUSED" ||
-                    error.code === "ECONNRESET" ||
-                    error.code === "ENOENT")) {
-                return true;
-            }
-            return false;
+            .catch((error) => retry$1(this, request, error.response, error));
+    }
+}
+async function retry$1(policy, request, operationResponse, err, retryData) {
+    retryData = updateRetryData(policy, retryData, err);
+    function shouldPolicyRetry(_response, error) {
+        if (error &&
+            error.code &&
+            (error.code === "ETIMEDOUT" ||
+                error.code === "ESOCKETTIMEDOUT" ||
+                error.code === "ECONNREFUSED" ||
+                error.code === "ECONNRESET" ||
+                error.code === "ENOENT")) {
+            return true;
         }
-        var err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData(policy, retryData, err);
-                    if (!shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) return [3 /*break*/, 5];
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 3, , 4]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [2 /*return*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry$1(policy, request, operationResponse, err_1, retryData)];
-                case 4: return [3 /*break*/, 6];
-                case 5:
-                    if (err) {
-                        // If the operation failed in the end, return all errors instead of just the last one
-                        return [2 /*return*/, Promise.reject(retryData.error)];
-                    }
-                    return [2 /*return*/, operationResponse];
-                case 6: return [2 /*return*/];
-            }
-        });
-    });
+        return false;
+    }
+    if (shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) {
+        // If previous operation ended with an error and the policy allows a retry, do that
+        try {
+            await delay(retryData.retryInterval);
+            return policy._nextPolicy.sendRequest(request.clone());
+        }
+        catch (nestedErr) {
+            return retry$1(policy, request, operationResponse, nestedErr, retryData);
+        }
+    }
+    else {
+        if (err) {
+            // If the operation failed in the end, return all errors instead of just the last one
+            return Promise.reject(retryData.error);
+        }
+        return operationResponse;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -54931,57 +57337,72 @@ function retry$1(policy, request, operationResponse, err, retryData) {
 })(exports.QueryCollectionFormat || (exports.QueryCollectionFormat = {}));
 
 // Copyright (c) Microsoft Corporation.
-var noProxyList = [];
-var isNoProxyInitalized = false;
-var byPassedList = new Map();
+/**
+ * Stores the patterns specified in NO_PROXY environment variable.
+ * @internal
+ */
+const globalNoProxyList = [];
+let noProxyListLoaded = false;
+/** A cache of whether a host should bypass the proxy. */
+const globalBypassedMap = new Map();
 function loadEnvironmentProxyValue() {
     if (!process) {
         return undefined;
     }
-    var httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
-    var allProxy = getEnvironmentValue(Constants.ALL_PROXY);
-    var httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
+    const httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
+    const allProxy = getEnvironmentValue(Constants.ALL_PROXY);
+    const httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
     return httpsProxy || allProxy || httpProxy;
 }
-// Check whether the given `uri` matches the noProxyList. If it matches, any request sent to that same `uri` won't set the proxy settings.
-function isBypassed(uri) {
-    if (byPassedList.has(uri)) {
-        return byPassedList.get(uri);
+/**
+ * Check whether the host of a given `uri` matches any pattern in the no proxy list.
+ * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
+ * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
+ */
+function isBypassed(uri, noProxyList, bypassedMap) {
+    if (noProxyList.length === 0) {
+        return false;
     }
-    loadNoProxy();
-    var isBypassed = false;
-    var host = URLBuilder.parse(uri).getHost();
-    for (var _i = 0, noProxyList_1 = noProxyList; _i < noProxyList_1.length; _i++) {
-        var proxyString = noProxyList_1[_i];
-        if (proxyString[0] === ".") {
-            if (uri.endsWith(proxyString)) {
-                isBypassed = true;
+    const host = URLBuilder.parse(uri).getHost();
+    if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {
+        return bypassedMap.get(host);
+    }
+    let isBypassedFlag = false;
+    for (const pattern of noProxyList) {
+        if (pattern[0] === ".") {
+            // This should match either domain it self or any subdomain or host
+            // .foo.com will match foo.com it self or *.foo.com
+            if (host.endsWith(pattern)) {
+                isBypassedFlag = true;
             }
             else {
-                if (host === proxyString.slice(1) && host.length === proxyString.length - 1) {
-                    isBypassed = true;
+                if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
+                    isBypassedFlag = true;
                 }
             }
         }
         else {
-            if (host === proxyString) {
-                isBypassed = true;
+            if (host === pattern) {
+                isBypassedFlag = true;
             }
         }
     }
-    byPassedList.set(uri, isBypassed);
-    return isBypassed;
+    bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);
+    return isBypassedFlag;
 }
+/**
+ * @internal
+ */
 function loadNoProxy() {
-    if (isNoProxyInitalized) {
-        return;
-    }
-    var noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    const noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    noProxyListLoaded = true;
     if (noProxy) {
-        var list = noProxy.split(",");
-        noProxyList = list.map(function (item) { return item.trim(); }).filter(function (item) { return item.length; });
+        return noProxy
+            .split(",")
+            .map((item) => item.trim())
+            .filter((item) => item.length);
     }
-    isNoProxyInitalized = true;
+    return [];
 }
 function getDefaultProxySettings(proxyUrl) {
     if (!proxyUrl) {
@@ -54990,171 +57411,184 @@ function getDefaultProxySettings(proxyUrl) {
             return undefined;
         }
     }
-    var _a = extractAuthFromUrl(proxyUrl), username = _a.username, password = _a.password, urlWithoutAuth = _a.urlWithoutAuth;
-    var parsedUrl = URLBuilder.parse(urlWithoutAuth);
-    var schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
+    const { username, password, urlWithoutAuth } = extractAuthFromUrl(proxyUrl);
+    const parsedUrl = URLBuilder.parse(urlWithoutAuth);
+    const schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
     return {
         host: schema + parsedUrl.getHost(),
         port: Number.parseInt(parsedUrl.getPort() || "80"),
-        username: username,
-        password: password
+        username,
+        password
     };
 }
-function proxyPolicy(proxySettings) {
+/**
+ * A policy that allows one to apply proxy settings to all requests.
+ * If not passed static settings, they will be retrieved from the HTTPS_PROXY
+ * or HTTP_PROXY environment variables.
+ * @param proxySettings - ProxySettings to use on each request.
+ * @param options - additional settings, for example, custom NO_PROXY patterns
+ */
+function proxyPolicy(proxySettings, options) {
     if (!proxySettings) {
         proxySettings = getDefaultProxySettings();
     }
+    if (!noProxyListLoaded) {
+        globalNoProxyList.push(...loadNoProxy());
+    }
     return {
-        create: function (nextPolicy, options) {
-            return new ProxyPolicy(nextPolicy, options, proxySettings);
+        create: (nextPolicy, requestPolicyOptions) => {
+            return new ProxyPolicy(nextPolicy, requestPolicyOptions, proxySettings, options === null || options === void 0 ? void 0 : options.customNoProxyList);
         }
     };
 }
 function extractAuthFromUrl(url) {
-    var atIndex = url.indexOf("@");
+    const atIndex = url.indexOf("@");
     if (atIndex === -1) {
         return { urlWithoutAuth: url };
     }
-    var schemeIndex = url.indexOf("://");
-    var authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
-    var auth = url.substring(authStart, atIndex);
-    var colonIndex = auth.indexOf(":");
-    var hasPassword = colonIndex !== -1;
-    var username = hasPassword ? auth.substring(0, colonIndex) : auth;
-    var password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
-    var urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
+    const schemeIndex = url.indexOf("://");
+    const authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
+    const auth = url.substring(authStart, atIndex);
+    const colonIndex = auth.indexOf(":");
+    const hasPassword = colonIndex !== -1;
+    const username = hasPassword ? auth.substring(0, colonIndex) : auth;
+    const password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
+    const urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
     return {
-        username: username,
-        password: password,
-        urlWithoutAuth: urlWithoutAuth
+        username,
+        password,
+        urlWithoutAuth
     };
 }
-var ProxyPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ProxyPolicy, _super);
-    function ProxyPolicy(nextPolicy, options, proxySettings) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.proxySettings = proxySettings;
-        return _this;
+class ProxyPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, proxySettings, customNoProxyList) {
+        super(nextPolicy, options);
+        this.proxySettings = proxySettings;
+        this.customNoProxyList = customNoProxyList;
     }
-    ProxyPolicy.prototype.sendRequest = function (request) {
-        if (!request.proxySettings && !isBypassed(request.url)) {
+    sendRequest(request) {
+        var _a;
+        if (!request.proxySettings &&
+            !isBypassed(request.url, (_a = this.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, this.customNoProxyList ? undefined : globalBypassedMap)) {
             request.proxySettings = this.proxySettings;
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return ProxyPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var StatusCodes = Constants.HttpConstants.StatusCodes;
+// Licensed under the MIT license.
+/**
+ * Maximum number of retries for the throttling retry policy
+ */
+const DEFAULT_CLIENT_MAX_RETRY_COUNT = 3;
+
+// Copyright (c) Microsoft Corporation.
+const StatusCodes = Constants.HttpConstants.StatusCodes;
 function throttlingRetryPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ThrottlingRetryPolicy(nextPolicy, options);
         }
     };
 }
+const StandardAbortMessage$1 = "The operation was aborted.";
 /**
  * To learn more, please refer to
  * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,
  * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and
  * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors
  */
-var ThrottlingRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ThrottlingRetryPolicy, _super);
-    function ThrottlingRetryPolicy(nextPolicy, options, _handleResponse) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._handleResponse = _handleResponse || _this._defaultResponseHandler;
-        return _this;
+class ThrottlingRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _handleResponse) {
+        super(nextPolicy, options);
+        this.numberOfRetries = 0;
+        this._handleResponse = _handleResponse || this._defaultResponseHandler;
     }
-    ThrottlingRetryPolicy.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(httpRequest.clone()).then(function (response) {
-                        if (response.status !== StatusCodes.TooManyRequests) {
-                            return response;
-                        }
-                        else {
-                            return _this._handleResponse(httpRequest, response);
-                        }
-                    })];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.prototype._defaultResponseHandler = function (httpRequest, httpResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var retryAfterHeader, delayInMs;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
-                if (retryAfterHeader) {
-                    delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
-                    if (delayInMs) {
-                        return [2 /*return*/, delay(delayInMs).then(function (_) { return _this._nextPolicy.sendRequest(httpRequest); })];
-                    }
+    async sendRequest(httpRequest) {
+        const response = await this._nextPolicy.sendRequest(httpRequest.clone());
+        if (response.status !== StatusCodes.TooManyRequests &&
+            response.status !== StatusCodes.ServiceUnavailable) {
+            return response;
+        }
+        else {
+            return this._handleResponse(httpRequest, response);
+        }
+    }
+    async _defaultResponseHandler(httpRequest, httpResponse) {
+        var _a;
+        const retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
+        if (retryAfterHeader) {
+            const delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
+            if (delayInMs) {
+                this.numberOfRetries += 1;
+                await delay(delayInMs, undefined, {
+                    abortSignal: httpRequest.abortSignal,
+                    abortErrorMsg: StandardAbortMessage$1
+                });
+                if ((_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+                    throw new abortController.AbortError(StandardAbortMessage$1);
                 }
-                return [2 /*return*/, httpResponse];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.parseRetryAfterHeader = function (headerValue) {
-        var retryAfterInSeconds = Number(headerValue);
+                if (this.numberOfRetries < DEFAULT_CLIENT_MAX_RETRY_COUNT) {
+                    return this.sendRequest(httpRequest);
+                }
+                else {
+                    return this._nextPolicy.sendRequest(httpRequest);
+                }
+            }
+        }
+        return httpResponse;
+    }
+    static parseRetryAfterHeader(headerValue) {
+        const retryAfterInSeconds = Number(headerValue);
         if (Number.isNaN(retryAfterInSeconds)) {
             return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);
         }
         else {
             return retryAfterInSeconds * 1000;
         }
-    };
-    ThrottlingRetryPolicy.parseDateRetryAfterHeader = function (headerValue) {
+    }
+    static parseDateRetryAfterHeader(headerValue) {
         try {
-            var now = Date.now();
-            var date = Date.parse(headerValue);
-            var diff = date - now;
+            const now = Date.now();
+            const date = Date.parse(headerValue);
+            const diff = date - now;
             return Number.isNaN(diff) ? undefined : diff;
         }
         catch (error) {
             return undefined;
         }
-    };
-    return ThrottlingRetryPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function signingPolicy(authenticationProvider) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SigningPolicy(nextPolicy, options, authenticationProvider);
         }
     };
 }
-var SigningPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SigningPolicy, _super);
-    function SigningPolicy(nextPolicy, options, authenticationProvider) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.authenticationProvider = authenticationProvider;
-        return _this;
+class SigningPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, authenticationProvider) {
+        super(nextPolicy, options);
+        this.authenticationProvider = authenticationProvider;
     }
-    SigningPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         return this.authenticationProvider.signRequest(request);
-    };
-    SigningPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
-        return this.signRequest(request).then(function (nextRequest) {
-            return _this._nextPolicy.sendRequest(nextRequest);
-        });
-    };
-    return SigningPolicy;
-}(BaseRequestPolicy));
+    }
+    sendRequest(request) {
+        return this.signRequest(request).then((nextRequest) => this._nextPolicy.sendRequest(nextRequest));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultKeepAliveOptions = {
+const DefaultKeepAliveOptions = {
     enable: true
 };
 function keepAlivePolicy(keepAliveOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);
         }
     };
@@ -55162,109 +57596,144 @@ function keepAlivePolicy(keepAliveOptions) {
 /**
  * KeepAlivePolicy is a policy used to control keep alive settings for every request.
  */
-var KeepAlivePolicy = /** @class */ (function (_super) {
-    tslib.__extends(KeepAlivePolicy, _super);
+class KeepAlivePolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
-     * @param {KeepAliveOptions} [keepAliveOptions]
+     * @param nextPolicy -
+     * @param options -
+     * @param keepAliveOptions -
      */
-    function KeepAlivePolicy(nextPolicy, options, keepAliveOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.keepAliveOptions = keepAliveOptions;
-        return _this;
+    constructor(nextPolicy, options, keepAliveOptions) {
+        super(nextPolicy, options);
+        this.keepAliveOptions = keepAliveOptions;
     }
     /**
      * Sends out request.
      *
-     * @param {WebResourceLike} request
-     * @returns {Promise<HttpOperationResponse>}
-     * @memberof KeepAlivePolicy
+     * @param request -
+     * @returns
      */
-    KeepAlivePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.keepAlive = this.keepAliveOptions.enable;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return KeepAlivePolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.keepAlive = this.keepAliveOptions.enable;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function tracingPolicy(tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
+const createSpan = coreTracing.createSpanFunction({
+    packagePrefix: "",
+    namespace: ""
+});
+function tracingPolicy(tracingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create(nextPolicy, options) {
             return new TracingPolicy(nextPolicy, options, tracingOptions);
         }
     };
 }
-var TracingPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TracingPolicy, _super);
-    function TracingPolicy(nextPolicy, options, tracingOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.userAgent = tracingOptions.userAgent;
-        return _this;
+class TracingPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, tracingOptions) {
+        super(nextPolicy, options);
+        this.userAgent = tracingOptions.userAgent;
     }
-    TracingPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var tracer, spanOptions, path, span, spanContext, traceParentHeader, traceState, response, serviceRequestId, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!request.spanOptions || !request.spanOptions.parent) {
-                            return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                        }
-                        tracer = coreTracing.getTracer();
-                        spanOptions = tslib.__assign(tslib.__assign({}, request.spanOptions), { kind: api.SpanKind.CLIENT });
-                        path = URLBuilder.parse(request.url).getPath() || "/";
-                        span = tracer.startSpan(path, spanOptions);
-                        span.setAttributes({
-                            "http.method": request.method,
-                            "http.url": request.url,
-                            requestId: request.requestId
-                        });
-                        if (this.userAgent) {
-                            span.setAttribute("http.user_agent", this.userAgent);
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        spanContext = span.context();
-                        traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
-                        if (traceParentHeader) {
-                            request.headers.set("traceparent", traceParentHeader);
-                            traceState = spanContext.traceState && spanContext.traceState.serialize();
-                            // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
-                            if (traceState) {
-                                request.headers.set("tracestate", traceState);
-                            }
-                        }
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(request)];
-                    case 2:
-                        response = _a.sent();
-                        span.setAttribute("http.status_code", response.status);
-                        serviceRequestId = response.headers.get("x-ms-request-id");
-                        if (serviceRequestId) {
-                            span.setAttribute("serviceRequestId", serviceRequestId);
-                        }
-                        span.end();
-                        return [2 /*return*/, response];
-                    case 3:
-                        err_1 = _a.sent();
-                        span.end();
-                        throw err_1;
-                    case 4: return [2 /*return*/];
+    async sendRequest(request) {
+        if (!request.tracingContext) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        const span = this.tryCreateSpan(request);
+        if (!span) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        try {
+            const response = await this._nextPolicy.sendRequest(request);
+            this.tryProcessResponse(span, response);
+            return response;
+        }
+        catch (err) {
+            this.tryProcessError(span, err);
+            throw err;
+        }
+    }
+    tryCreateSpan(request) {
+        var _a;
+        try {
+            const path = URLBuilder.parse(request.url).getPath() || "/";
+            // Passing spanOptions as part of tracingOptions to maintain compatibility @azure/core-tracing@preview.13 and earlier.
+            // We can pass this as a separate parameter once we upgrade to the latest core-tracing.
+            const { span } = createSpan(path, {
+                tracingOptions: {
+                    spanOptions: Object.assign(Object.assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
+                    tracingContext: request.tracingContext
                 }
             });
-        });
-    };
-    return TracingPolicy;
-}(BaseRequestPolicy));
+            // If the span is not recording, don't do any more work.
+            if (!span.isRecording()) {
+                span.end();
+                return undefined;
+            }
+            const namespaceFromContext = (_a = request.tracingContext) === null || _a === void 0 ? void 0 : _a.getValue(Symbol.for("az.namespace"));
+            if (typeof namespaceFromContext === "string") {
+                span.setAttribute("az.namespace", namespaceFromContext);
+            }
+            span.setAttributes({
+                "http.method": request.method,
+                "http.url": request.url,
+                requestId: request.requestId
+            });
+            if (this.userAgent) {
+                span.setAttribute("http.user_agent", this.userAgent);
+            }
+            // set headers
+            const spanContext = span.spanContext();
+            const traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
+            if (traceParentHeader && coreTracing.isSpanContextValid(spanContext)) {
+                request.headers.set("traceparent", traceParentHeader);
+                const traceState = spanContext.traceState && spanContext.traceState.serialize();
+                // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
+                if (traceState) {
+                    request.headers.set("tracestate", traceState);
+                }
+            }
+            return span;
+        }
+        catch (error) {
+            logger.warning(`Skipping creating a tracing span due to an error: ${error.message}`);
+            return undefined;
+        }
+    }
+    tryProcessError(span, err) {
+        try {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: err.message
+            });
+            if (err.statusCode) {
+                span.setAttribute("http.status_code", err.statusCode);
+            }
+            span.end();
+        }
+        catch (error) {
+            logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);
+        }
+    }
+    tryProcessResponse(span, response) {
+        try {
+            span.setAttribute("http.status_code", response.status);
+            const serviceRequestId = response.headers.get("x-ms-request-id");
+            if (serviceRequestId) {
+                span.setAttribute("serviceRequestId", serviceRequestId);
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.OK
+            });
+            span.end();
+        }
+        catch (error) {
+            logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -55273,7 +57742,7 @@ var TracingPolicy = /** @class */ (function (_super) {
  */
 function disableResponseDecompressionPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DisableResponseDecompressionPolicy(nextPolicy, options);
         }
     };
@@ -55282,40 +57751,34 @@ function disableResponseDecompressionPolicy() {
  * A policy to disable response decompression according to Accept-Encoding header
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
  */
-var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DisableResponseDecompressionPolicy, _super);
+class DisableResponseDecompressionPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of DisableResponseDecompressionPolicy.
      *
-     * @param {RequestPolicy} nextPolicy
-     * @param {RequestPolicyOptions} options
+     * @param nextPolicy -
+     * @param options -
      */
     // The parent constructor is protected.
     /* eslint-disable-next-line @typescript-eslint/no-useless-constructor */
-    function DisableResponseDecompressionPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
-     * @param {WebResource} request
-     * @returns {Promise<HttpOperationResponse>}
+     * @param request -
+     * @returns
      */
-    DisableResponseDecompressionPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.decompressResponse = false;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return DisableResponseDecompressionPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.decompressResponse = false;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function ndJsonPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new NdJsonPolicy(nextPolicy, options);
         }
     };
@@ -55323,69 +57786,63 @@ function ndJsonPolicy() {
 /**
  * NdJsonPolicy that formats a JSON array as newline-delimited JSON
  */
-var NdJsonPolicy = /** @class */ (function (_super) {
-    tslib.__extends(NdJsonPolicy, _super);
+class NdJsonPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
-     *
-     * @param nextPolicy
-     * @param options
      */
-    function NdJsonPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends a request.
-     *
-     * @param request
      */
-    NdJsonPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var body;
-            return tslib.__generator(this, function (_a) {
-                // There currently isn't a good way to bypass the serializer
-                if (typeof request.body === "string" && request.body.startsWith("[")) {
-                    body = JSON.parse(request.body);
-                    if (Array.isArray(body)) {
-                        request.body = body.map(function (item) { return JSON.stringify(item) + "\n"; }).join("");
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return NdJsonPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        // There currently isn't a good way to bypass the serializer
+        if (typeof request.body === "string" && request.body.startsWith("[")) {
+            const body = JSON.parse(request.body);
+            if (Array.isArray(body)) {
+                request.body = body.map((item) => JSON.stringify(item) + "\n").join("");
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+let cachedHttpClient;
+function getCachedDefaultHttpClient() {
+    if (!cachedHttpClient) {
+        cachedHttpClient = new NodeFetchHttpClient();
+    }
+    return cachedHttpClient;
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
- * @class
- * Initializes a new instance of the ServiceClient.
+ * ServiceClient sends service requests and receives responses.
  */
-var ServiceClient = /** @class */ (function () {
+class ServiceClient {
     /**
      * The ServiceClient constructor
-     * @constructor
-     * @param credentials The credentials used for authentication with the service.
-     * @param options The service client options that govern the behavior of the client.
+     * @param credentials - The credentials used for authentication with the service.
+     * @param options - The service client options that govern the behavior of the client.
      */
-    function ServiceClient(credentials, 
+    constructor(credentials, 
     /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */
     options) {
-        var _this = this;
         if (!options) {
             options = {};
         }
         this._withCredentials = options.withCredentials || false;
-        this._httpClient = options.httpClient || new NodeFetchHttpClient();
+        this._httpClient = options.httpClient || getCachedDefaultHttpClient();
         this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);
-        var requestPolicyFactories;
+        let requestPolicyFactories;
         if (Array.isArray(options.requestPolicyFactories)) {
             logger.info("ServiceClient: using custom request policies");
             requestPolicyFactories = options.requestPolicyFactories;
         }
         else {
-            var authPolicyFactory = undefined;
+            let authPolicyFactory = undefined;
             if (coreAuth.isTokenCredential(credentials)) {
                 logger.info("ServiceClient: creating bearer token authentication policy from provided credentials");
                 // Create a wrapped RequestPolicyFactory here so that we can provide the
@@ -55394,16 +57851,21 @@ var ServiceClient = /** @class */ (function () {
                 // implementations do not set baseUri until after ServiceClient's constructor
                 // is finished, leaving baseUri empty at the time when it is needed to
                 // build the correct scope name.
-                var wrappedPolicyFactory = function () {
-                    var bearerTokenPolicyFactory = undefined;
+                const wrappedPolicyFactory = () => {
+                    let bearerTokenPolicyFactory = undefined;
                     // eslint-disable-next-line @typescript-eslint/no-this-alias
-                    var serviceClient = _this;
+                    const serviceClient = this;
+                    const serviceClientOptions = options;
                     return {
-                        create: function (nextPolicy, options) {
-                            if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
-                                bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, (serviceClient.baseUri || "") + "/.default");
+                        create(nextPolicy, createOptions) {
+                            const credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
+                            if (!credentialScopes) {
+                                throw new Error(`When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy`);
                             }
-                            return bearerTokenPolicyFactory.create(nextPolicy, options);
+                            if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
+                                bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);
+                            }
+                            return bearerTokenPolicyFactory.create(nextPolicy, createOptions);
                         }
                     };
                 };
@@ -55421,7 +57883,7 @@ var ServiceClient = /** @class */ (function () {
             if (options.requestPolicyFactories) {
                 // options.requestPolicyFactories can also be a function that manipulates
                 // the default requestPolicyFactories array
-                var newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
+                const newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
                 if (newRequestPolicyFactories) {
                     requestPolicyFactories = newRequestPolicyFactories;
                 }
@@ -55432,11 +57894,11 @@ var ServiceClient = /** @class */ (function () {
     /**
      * Send the provided httpRequest.
      */
-    ServiceClient.prototype.sendRequest = function (options) {
+    sendRequest(options) {
         if (options === null || options === undefined || typeof options !== "object") {
             throw new Error("options cannot be null or undefined and it must be of type object.");
         }
-        var httpRequest;
+        let httpRequest;
         try {
             if (isWebResourceLike(options)) {
                 options.validateRequestProperties();
@@ -55450,231 +57912,226 @@ var ServiceClient = /** @class */ (function () {
         catch (error) {
             return Promise.reject(error);
         }
-        var httpPipeline = this._httpClient;
+        let httpPipeline = this._httpClient;
         if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {
-            for (var i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
+            for (let i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
                 httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);
             }
         }
         return httpPipeline.sendRequest(httpRequest);
-    };
+    }
     /**
      * Send an HTTP request that is populated using the provided OperationSpec.
-     * @param {OperationArguments} operationArguments The arguments that the HTTP request's templated values will be populated from.
-     * @param {OperationSpec} operationSpec The OperationSpec to use to populate the httpRequest.
-     * @param {ServiceCallback} callback The callback to call when the response is received.
+     * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.
+     * @param operationSpec - The OperationSpec to use to populate the httpRequest.
+     * @param callback - The callback to call when the response is received.
      */
-    ServiceClient.prototype.sendOperationRequest = function (operationArguments, operationSpec, callback) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var httpRequest, result, baseUri, requestUrl, _i, _a, urlParameter, urlParameterValue, _b, _c, queryParameter, queryParameterValue, index, item, index, contentType, _d, _e, headerParameter, headerValue, headerCollectionPrefix, _f, _g, key, options, customHeaderName, rawResponse, sendRequestError, error_1, error_2, cb;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        if (typeof operationArguments.options === "function") {
-                            callback = operationArguments.options;
-                            operationArguments.options = undefined;
-                        }
-                        httpRequest = new WebResource();
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 6, , 7]);
-                        baseUri = operationSpec.baseUrl || this.baseUri;
-                        if (!baseUri) {
-                            throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
-                        }
-                        httpRequest.method = operationSpec.httpMethod;
-                        httpRequest.operationSpec = operationSpec;
-                        requestUrl = URLBuilder.parse(baseUri);
-                        if (operationSpec.path) {
-                            requestUrl.appendPath(operationSpec.path);
-                        }
-                        if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
-                            for (_i = 0, _a = operationSpec.urlParameters; _i < _a.length; _i++) {
-                                urlParameter = _a[_i];
-                                urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
-                                urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter));
-                                if (!urlParameter.skipEncoding) {
-                                    urlParameterValue = encodeURIComponent(urlParameterValue);
+    async sendOperationRequest(operationArguments, operationSpec, callback) {
+        var _a;
+        if (typeof operationArguments.options === "function") {
+            callback = operationArguments.options;
+            operationArguments.options = undefined;
+        }
+        const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+        const httpRequest = new WebResource();
+        let result;
+        try {
+            const baseUri = operationSpec.baseUrl || this.baseUri;
+            if (!baseUri) {
+                throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
+            }
+            httpRequest.method = operationSpec.httpMethod;
+            httpRequest.operationSpec = operationSpec;
+            const requestUrl = URLBuilder.parse(baseUri);
+            if (operationSpec.path) {
+                requestUrl.appendPath(operationSpec.path);
+            }
+            if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
+                for (const urlParameter of operationSpec.urlParameters) {
+                    let urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
+                    urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
+                    if (!urlParameter.skipEncoding) {
+                        urlParameterValue = encodeURIComponent(urlParameterValue);
+                    }
+                    requestUrl.replaceAll(`{${urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)}}`, urlParameterValue);
+                }
+            }
+            if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
+                for (const queryParameter of operationSpec.queryParameters) {
+                    let queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
+                    if (queryParameterValue !== undefined && queryParameterValue !== null) {
+                        queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null) {
+                            if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
+                                if (queryParameterValue.length === 0) {
+                                    // The collection is empty, no need to try serializing the current queryParam
+                                    continue;
                                 }
-                                requestUrl.replaceAll("{" + (urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)) + "}", urlParameterValue);
-                            }
-                        }
-                        if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
-                            for (_b = 0, _c = operationSpec.queryParameters; _b < _c.length; _b++) {
-                                queryParameter = _c[_b];
-                                queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
-                                if (queryParameterValue !== undefined && queryParameterValue !== null) {
-                                    queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null) {
-                                        if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
-                                            if (queryParameterValue.length === 0) {
-                                                queryParameterValue = "";
-                                            }
-                                            else {
-                                                for (index in queryParameterValue) {
-                                                    item = queryParameterValue[index];
-                                                    queryParameterValue[index] =
-                                                        item === undefined || item === null ? "" : item.toString();
-                                                }
-                                            }
-                                        }
-                                        else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
-                                            queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
-                                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                        }
-                                    }
-                                    if (!queryParameter.skipEncoding) {
-                                        if (Array.isArray(queryParameterValue)) {
-                                            for (index in queryParameterValue) {
-                                                if (queryParameterValue[index] !== undefined &&
-                                                    queryParameterValue[index] !== null) {
-                                                    queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
-                                                }
-                                            }
-                                        }
-                                        else {
-                                            queryParameterValue = encodeURIComponent(queryParameterValue);
-                                        }
-                                    }
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
-                                        queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                    }
-                                    requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
-                                }
-                            }
-                        }
-                        httpRequest.url = requestUrl.toString();
-                        contentType = operationSpec.contentType || this.requestContentType;
-                        if (contentType) {
-                            httpRequest.headers.set("Content-Type", contentType);
-                        }
-                        if (operationSpec.headerParameters) {
-                            for (_d = 0, _e = operationSpec.headerParameters; _d < _e.length; _d++) {
-                                headerParameter = _e[_d];
-                                headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
-                                if (headerValue !== undefined && headerValue !== null) {
-                                    headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));
-                                    headerCollectionPrefix = headerParameter.mapper
-                                        .headerCollectionPrefix;
-                                    if (headerCollectionPrefix) {
-                                        for (_f = 0, _g = Object.keys(headerValue); _f < _g.length; _f++) {
-                                            key = _g[_f];
-                                            httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
-                                        }
-                                    }
-                                    else {
-                                        httpRequest.headers.set(headerParameter.mapper.serializedName ||
-                                            getPathStringFromParameter(headerParameter), headerValue);
+                                else {
+                                    for (const index in queryParameterValue) {
+                                        const item = queryParameterValue[index];
+                                        queryParameterValue[index] =
+                                            item === undefined || item === null ? "" : item.toString();
                                     }
                                 }
                             }
+                            else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
+                                queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
+                                queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
+                            }
                         }
-                        options = operationArguments.options;
-                        if (options) {
-                            if (options.customHeaders) {
-                                for (customHeaderName in options.customHeaders) {
-                                    httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                        if (!queryParameter.skipEncoding) {
+                            if (Array.isArray(queryParameterValue)) {
+                                for (const index in queryParameterValue) {
+                                    if (queryParameterValue[index] !== undefined &&
+                                        queryParameterValue[index] !== null) {
+                                        queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
+                                    }
                                 }
                             }
-                            if (options.abortSignal) {
-                                httpRequest.abortSignal = options.abortSignal;
-                            }
-                            if (options.timeout) {
-                                httpRequest.timeout = options.timeout;
-                            }
-                            if (options.onUploadProgress) {
-                                httpRequest.onUploadProgress = options.onUploadProgress;
-                            }
-                            if (options.onDownloadProgress) {
-                                httpRequest.onDownloadProgress = options.onDownloadProgress;
-                            }
-                            if (options.spanOptions) {
-                                httpRequest.spanOptions = options.spanOptions;
-                            }
-                            if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
-                                httpRequest.shouldDeserialize = options.shouldDeserialize;
+                            else {
+                                queryParameterValue = encodeURIComponent(queryParameterValue);
                             }
                         }
-                        httpRequest.withCredentials = this._withCredentials;
-                        serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
-                        if (httpRequest.streamResponseBody === undefined || httpRequest.streamResponseBody === null) {
-                            httpRequest.streamResponseBody = isStreamOperation(operationSpec);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
+                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
                         }
-                        rawResponse = void 0;
-                        sendRequestError = void 0;
-                        _h.label = 2;
-                    case 2:
-                        _h.trys.push([2, 4, , 5]);
-                        return [4 /*yield*/, this.sendRequest(httpRequest)];
-                    case 3:
-                        rawResponse = _h.sent();
-                        return [3 /*break*/, 5];
-                    case 4:
-                        error_1 = _h.sent();
-                        sendRequestError = error_1;
-                        return [3 /*break*/, 5];
-                    case 5:
-                        if (sendRequestError) {
-                            if (sendRequestError.response) {
-                                sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
-                                    operationSpec.responses["default"]);
+                        requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
+                    }
+                }
+            }
+            httpRequest.url = requestUrl.toString();
+            const contentType = operationSpec.contentType || this.requestContentType;
+            if (contentType && operationSpec.requestBody) {
+                httpRequest.headers.set("Content-Type", contentType);
+            }
+            if (operationSpec.headerParameters) {
+                for (const headerParameter of operationSpec.headerParameters) {
+                    let headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
+                    if (headerValue !== undefined && headerValue !== null) {
+                        headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
+                        const headerCollectionPrefix = headerParameter.mapper
+                            .headerCollectionPrefix;
+                        if (headerCollectionPrefix) {
+                            for (const key of Object.keys(headerValue)) {
+                                httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
                             }
-                            result = Promise.reject(sendRequestError);
                         }
                         else {
-                            result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+                            httpRequest.headers.set(headerParameter.mapper.serializedName ||
+                                getPathStringFromParameter(headerParameter), headerValue);
                         }
-                        return [3 /*break*/, 7];
-                    case 6:
-                        error_2 = _h.sent();
-                        result = Promise.reject(error_2);
-                        return [3 /*break*/, 7];
-                    case 7:
-                        cb = callback;
-                        if (cb) {
-                            result
-                                // tslint:disable-next-line:no-null-keyword
-                                .then(function (res) { return cb(null, res._response.parsedBody, res._response.request, res._response); })
-                                .catch(function (err) { return cb(err); });
-                        }
-                        return [2 /*return*/, result];
+                    }
                 }
-            });
-        });
-    };
-    return ServiceClient;
-}());
+            }
+            const options = operationArguments.options;
+            if (options) {
+                if (options.customHeaders) {
+                    for (const customHeaderName in options.customHeaders) {
+                        httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                    }
+                }
+                if (options.abortSignal) {
+                    httpRequest.abortSignal = options.abortSignal;
+                }
+                if (options.timeout) {
+                    httpRequest.timeout = options.timeout;
+                }
+                if (options.onUploadProgress) {
+                    httpRequest.onUploadProgress = options.onUploadProgress;
+                }
+                if (options.onDownloadProgress) {
+                    httpRequest.onDownloadProgress = options.onDownloadProgress;
+                }
+                if (options.spanOptions) {
+                    // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.
+                    httpRequest.spanOptions = options.spanOptions;
+                }
+                if (options.tracingContext) {
+                    httpRequest.tracingContext = options.tracingContext;
+                }
+                if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
+                    httpRequest.shouldDeserialize = options.shouldDeserialize;
+                }
+            }
+            httpRequest.withCredentials = this._withCredentials;
+            serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
+            if (httpRequest.streamResponseStatusCodes === undefined) {
+                httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+            }
+            let rawResponse;
+            let sendRequestError;
+            try {
+                rawResponse = await this.sendRequest(httpRequest);
+            }
+            catch (error) {
+                sendRequestError = error;
+            }
+            if (sendRequestError) {
+                if (sendRequestError.response) {
+                    sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
+                        operationSpec.responses["default"]);
+                }
+                result = Promise.reject(sendRequestError);
+            }
+            else {
+                result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+            }
+        }
+        catch (error) {
+            result = Promise.reject(error);
+        }
+        const cb = callback;
+        if (cb) {
+            result
+                .then((res) => cb(null, res._response.parsedBody, res._response.request, res._response))
+                .catch((err) => cb(err));
+        }
+        return result;
+    }
+}
 function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {
-    var _a;
+    var _a, _b, _c, _d, _e, _f;
+    const serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
+    const updatedOptions = {
+        rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : "",
+        includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,
+        xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY
+    };
+    const xmlCharKey = serializerOptions.xmlCharKey;
     if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
         httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);
-        var bodyMapper = operationSpec.requestBody.mapper;
-        var required = bodyMapper.required, xmlName = bodyMapper.xmlName, xmlElementName = bodyMapper.xmlElementName, serializedName = bodyMapper.serializedName, xmlNamespace = bodyMapper.xmlNamespace, xmlNamespacePrefix = bodyMapper.xmlNamespacePrefix;
-        var typeName = bodyMapper.type.name;
+        const bodyMapper = operationSpec.requestBody.mapper;
+        const { required, xmlName, xmlElementName, serializedName, xmlNamespace, xmlNamespacePrefix } = bodyMapper;
+        const typeName = bodyMapper.type.name;
         try {
             if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {
-                var requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
-                httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString);
-                var isStream = typeName === MapperType.Stream;
+                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
+                httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);
+                const isStream = typeName === MapperType.Stream;
                 if (operationSpec.isXML) {
-                    var xmlnsKey = xmlNamespacePrefix ? "xmlns:" + xmlNamespacePrefix : "xmlns";
-                    var value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body);
+                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
+                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
                     if (typeName === MapperType.Sequence) {
-                        httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName });
+                        httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {
+                            rootName: xmlName || serializedName,
+                            xmlCharKey
+                        });
                     }
                     else if (!isStream) {
                         httpRequest.body = stringifyXML(value, {
-                            rootName: xmlName || serializedName
+                            rootName: xmlName || serializedName,
+                            xmlCharKey
                         });
                     }
                 }
                 else if (typeName === MapperType.String &&
-                    (((_a = operationSpec.contentType) === null || _a === void 0 ? void 0 : _a.match("text/plain")) || operationSpec.mediaType === "text")) {
+                    (((_f = operationSpec.contentType) === null || _f === void 0 ? void 0 : _f.match("text/plain")) || operationSpec.mediaType === "text")) {
                     // the String serializer has validated that request body is a string
                     // so just send the string.
                     return;
@@ -55685,17 +58142,16 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
             }
         }
         catch (error) {
-            throw new Error("Error \"" + error.message + "\" occurred in serializing the payload - " + JSON.stringify(serializedName, undefined, "  ") + ".");
+            throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, "  ")}.`);
         }
     }
     else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
         httpRequest.formData = {};
-        for (var _i = 0, _b = operationSpec.formDataParameters; _i < _b.length; _i++) {
-            var formDataParameter = _b[_i];
-            var formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
+        for (const formDataParameter of operationSpec.formDataParameters) {
+            const formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
             if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
-                var formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
-                httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter));
+                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
+                httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
             }
         }
     }
@@ -55703,17 +58159,19 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
 /**
  * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
  */
-function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue) {
-    var _a;
+function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
     // Composite and Sequence schemas already got their root namespace set during serialization
     // We just need to add xmlns to the other schema types
     if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
-        return { _: serializedValue, $: (_a = {}, _a[xmlnsKey] = xmlNamespace, _a) };
+        const result = {};
+        result[options.xmlCharKey] = serializedValue;
+        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
+        return result;
     }
     return serializedValue;
 }
 function getValueOrFunctionResult(value, defaultValueCreator) {
-    var result;
+    let result;
     if (typeof value === "string") {
         result = value;
     }
@@ -55726,15 +58184,15 @@ function getValueOrFunctionResult(value, defaultValueCreator) {
     return result;
 }
 function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
-    var factories = [];
+    const factories = [];
     if (options.generateClientRequestIdHeader) {
         factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));
     }
     if (authPolicyFactory) {
         factories.push(authPolicyFactory);
     }
-    var userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
-    var userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
+    const userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
+    const userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
     if (userAgentHeaderName && userAgentHeaderValue) {
         factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));
     }
@@ -55746,37 +58204,37 @@ function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
         factories.push(throttlingRetryPolicy());
     }
     factories.push(deserializationPolicy(options.deserializationContentTypes));
-    {
+    if (isNode) {
         factories.push(proxyPolicy(options.proxySettings));
     }
     factories.push(logPolicy({ logger: logger.info }));
     return factories;
 }
 function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
-    var requestPolicyFactories = [];
+    const requestPolicyFactories = [];
     if (pipelineOptions.sendStreamingJson) {
         requestPolicyFactories.push(ndJsonPolicy());
     }
-    var userAgentValue = undefined;
+    let userAgentValue = undefined;
     if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {
-        var userAgentInfo = [];
+        const userAgentInfo = [];
         userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);
         // Add the default user agent value if it isn't already specified
         // by the userAgentPrefix option.
-        var defaultUserAgentInfo = getDefaultUserAgentValue();
+        const defaultUserAgentInfo = getDefaultUserAgentValue();
         if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {
             userAgentInfo.push(defaultUserAgentInfo);
         }
         userAgentValue = userAgentInfo.join(" ");
     }
-    var keepAliveOptions = tslib.__assign(tslib.__assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
-    var retryOptions = tslib.__assign(tslib.__assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
-    var redirectOptions = tslib.__assign(tslib.__assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
-    {
+    const keepAliveOptions = Object.assign(Object.assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
+    const retryOptions = Object.assign(Object.assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
+    const redirectOptions = Object.assign(Object.assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
+    if (isNode) {
         requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));
     }
-    var deserializationOptions = tslib.__assign(tslib.__assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
-    var loggingOptions = tslib.__assign({}, pipelineOptions.loggingOptions);
+    const deserializationOptions = Object.assign(Object.assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
+    const loggingOptions = Object.assign({}, pipelineOptions.loggingOptions);
     requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));
     if (redirectOptions.handleRedirects) {
         requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));
@@ -55790,28 +58248,30 @@ function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
     }
     return {
         httpClient: pipelineOptions.httpClient,
-        requestPolicyFactories: requestPolicyFactories
+        requestPolicyFactories
     };
 }
 function getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {
     return getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameter.parameterPath, parameter.mapper, serializer);
 }
 function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {
-    var value;
+    var _a;
+    let value;
     if (typeof parameterPath === "string") {
         parameterPath = [parameterPath];
     }
+    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
     if (Array.isArray(parameterPath)) {
         if (parameterPath.length > 0) {
             if (parameterMapper.isConstant) {
                 value = parameterMapper.defaultValue;
             }
             else {
-                var propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
+                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
                 if (!propertySearchResult.propertyFound) {
                     propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);
                 }
-                var useDefaultValue = false;
+                let useDefaultValue = false;
                 if (!propertySearchResult.propertyFound) {
                     useDefaultValue =
                         parameterMapper.required ||
@@ -55820,21 +58280,21 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
                 value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;
             }
             // Serialize just for validation purposes.
-            var parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
-            serializer.serialize(parameterMapper, value, parameterPathString);
+            const parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
+            serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);
         }
     }
     else {
         if (parameterMapper.required) {
             value = {};
         }
-        for (var propertyName in parameterPath) {
-            var propertyMapper = parameterMapper.type.modelProperties[propertyName];
-            var propertyPath = parameterPath[propertyName];
-            var propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
+        for (const propertyName in parameterPath) {
+            const propertyMapper = parameterMapper.type.modelProperties[propertyName];
+            const propertyPath = parameterPath[propertyName];
+            const propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
             // Serialize just for validation purposes.
-            var propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
-            serializer.serialize(propertyMapper, propertyValue, propertyPathString);
+            const propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
+            serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);
             if (propertyValue !== undefined && propertyValue !== null) {
                 if (!value) {
                     value = {};
@@ -55846,10 +58306,10 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
     return value;
 }
 function getPropertyFromParameterPath(parent, parameterPath) {
-    var result = { propertyFound: false };
-    var i = 0;
+    const result = { propertyFound: false };
+    let i = 0;
     for (; i < parameterPath.length; ++i) {
-        var parameterPathPart = parameterPath[i];
+        const parameterPathPart = parameterPath[i];
         // Make sure to check inherited properties too, so don't use hasOwnProperty().
         if (parent !== undefined && parent !== null && parameterPathPart in parent) {
             parent = parent[parameterPathPart];
@@ -55865,31 +58325,29 @@ function getPropertyFromParameterPath(parent, parameterPath) {
     return result;
 }
 function flattenResponse(_response, responseSpec) {
-    var parsedHeaders = _response.parsedHeaders;
-    var bodyMapper = responseSpec && responseSpec.bodyMapper;
-    var addOperationResponse = function (obj) {
+    const parsedHeaders = _response.parsedHeaders;
+    const bodyMapper = responseSpec && responseSpec.bodyMapper;
+    const addOperationResponse = (obj) => {
         return Object.defineProperty(obj, "_response", {
             value: _response
         });
     };
     if (bodyMapper) {
-        var typeName = bodyMapper.type.name;
+        const typeName = bodyMapper.type.name;
         if (typeName === "Stream") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
         }
-        var modelProperties_1 = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
-        var isPageableResponse = Object.keys(modelProperties_1).some(function (k) { return modelProperties_1[k].serializedName === ""; });
+        const modelProperties = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
+        const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === "");
         if (typeName === "Sequence" || isPageableResponse) {
-            var arrayResponse = tslib.__spreadArrays((_response.parsedBody || []));
-            for (var _i = 0, _a = Object.keys(modelProperties_1); _i < _a.length; _i++) {
-                var key = _a[_i];
-                if (modelProperties_1[key].serializedName) {
+            const arrayResponse = [...(_response.parsedBody || [])];
+            for (const key of Object.keys(modelProperties)) {
+                if (modelProperties[key].serializedName) {
                     arrayResponse[key] = _response.parsedBody[key];
                 }
             }
             if (parsedHeaders) {
-                for (var _b = 0, _c = Object.keys(parsedHeaders); _b < _c.length; _b++) {
-                    var key = _c[_b];
+                for (const key of Object.keys(parsedHeaders)) {
                     arrayResponse[key] = parsedHeaders[key];
                 }
             }
@@ -55897,32 +58355,136 @@ function flattenResponse(_response, responseSpec) {
             return arrayResponse;
         }
         if (typeName === "Composite" || typeName === "Dictionary") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
         }
     }
     if (bodyMapper ||
         _response.request.method === "HEAD" ||
         isPrimitiveType(_response.parsedBody)) {
         // primitive body types and HEAD booleans
-        return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { body: _response.parsedBody }));
+        return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { body: _response.parsedBody }));
     }
-    return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+    return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
+}
+function getCredentialScopes(options, baseUri) {
+    if (options === null || options === void 0 ? void 0 : options.credentialScopes) {
+        const scopes = options.credentialScopes;
+        return Array.isArray(scopes)
+            ? scopes.map((scope) => new url.URL(scope).toString())
+            : new url.URL(scopes).toString();
+    }
+    if (baseUri) {
+        return `${baseUri}/.default`;
+    }
+    return undefined;
 }
 
 // Copyright (c) Microsoft Corporation.
-var HeaderConstants = Constants.HeaderConstants;
-var DEFAULT_AUTHORIZATION_SCHEME = "Basic";
-var BasicAuthenticationCredentials = /** @class */ (function () {
+/**
+ * This function is only here for compatibility. Use createSpanFunction in core-tracing.
+ *
+ * @deprecated This function is only here for compatibility. Use createSpanFunction in core-tracing.
+ * @hidden
+
+ * @param spanConfig - The name of the operation being performed.
+ * @param tracingOptions - The options for the underlying http request.
+ */
+function createSpanFunction(args) {
+    return coreTracing.createSpanFunction(args);
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Defines the default token refresh buffer duration.
+ */
+const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
+/**
+ * Provides an {@link AccessTokenCache} implementation which clears
+ * the cached {@link AccessToken}'s after the expiresOnTimestamp has
+ * passed.
+ *
+ * @deprecated No longer used in the bearer authorization policy.
+ */
+class ExpiringAccessTokenCache {
+    /**
+     * Constructs an instance of {@link ExpiringAccessTokenCache} with
+     * an optional expiration buffer time.
+     */
+    constructor(tokenRefreshBufferMs = TokenRefreshBufferMs) {
+        this.cachedToken = undefined;
+        this.tokenRefreshBufferMs = tokenRefreshBufferMs;
+    }
+    setCachedToken(accessToken) {
+        this.cachedToken = accessToken;
+    }
+    getCachedToken() {
+        if (this.cachedToken &&
+            Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
+            this.cachedToken = undefined;
+        }
+        return this.cachedToken;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
+ *
+ * @deprecated No longer used in the bearer authorization policy.
+ */
+class AccessTokenRefresher {
+    constructor(credential, scopes, requiredMillisecondsBeforeNewRefresh = 30000) {
+        this.credential = credential;
+        this.scopes = scopes;
+        this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
+        this.lastCalled = 0;
+    }
+    /**
+     * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
+     * that we are ready for a new refresh.
+     */
+    isReady() {
+        // We're only ready for a new refresh if the required milliseconds have passed.
+        return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
+    }
+    /**
+     * Stores the time in which it is called,
+     * then requests a new token,
+     * then sets this.promise to undefined,
+     * then returns the token.
+     */
+    async getToken(options) {
+        this.lastCalled = Date.now();
+        const token = await this.credential.getToken(this.scopes, options);
+        this.promise = undefined;
+        return token || undefined;
+    }
+    /**
+     * Requests a new token if we're not currently waiting for a new token.
+     * Returns null if the required time between each call hasn't been reached.
+     */
+    refresh(options) {
+        if (!this.promise) {
+            this.promise = this.getToken(options);
+        }
+        return this.promise;
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+const HeaderConstants = Constants.HeaderConstants;
+const DEFAULT_AUTHORIZATION_SCHEME = "Basic";
+class BasicAuthenticationCredentials {
     /**
      * Creates a new BasicAuthenticationCredentials object.
      *
-     * @constructor
-     * @param {string} userName User name.
-     * @param {string} password Password.
-     * @param {string} [authorizationScheme] The authorization scheme.
+     * @param userName - User name.
+     * @param password - Password.
+     * @param authorizationScheme - The authorization scheme.
      */
-    function BasicAuthenticationCredentials(userName, password, authorizationScheme) {
-        if (authorizationScheme === void 0) { authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME; }
+    constructor(userName, password, authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME) {
         this.authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME;
         if (userName === null || userName === undefined || typeof userName.valueOf() !== "string") {
             throw new Error("userName cannot be null or undefined and must be of type string.");
@@ -55937,32 +58499,30 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
     /**
      * Signs a request with the Authentication header.
      *
-     * @param {WebResourceLike} webResource The WebResourceLike to be signed.
-     * @returns {Promise<WebResourceLike>} The signed request object.
+     * @param webResource - The WebResourceLike to be signed.
+     * @returns The signed request object.
      */
-    BasicAuthenticationCredentials.prototype.signRequest = function (webResource) {
-        var credentials = this.userName + ":" + this.password;
-        var encodedCredentials = this.authorizationScheme + " " + encodeString(credentials);
+    signRequest(webResource) {
+        const credentials = `${this.userName}:${this.password}`;
+        const encodedCredentials = `${this.authorizationScheme} ${encodeString(credentials)}`;
         if (!webResource.headers)
             webResource.headers = new HttpHeaders();
         webResource.headers.set(HeaderConstants.AUTHORIZATION, encodedCredentials);
         return Promise.resolve(webResource);
-    };
-    return BasicAuthenticationCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Authenticates to a service using an API key.
  */
-var ApiKeyCredentials = /** @class */ (function () {
+class ApiKeyCredentials {
     /**
-     * @constructor
-     * @param {object} options   Specifies the options to be provided for auth. Either header or query needs to be provided.
+     * @param options - Specifies the options to be provided for auth. Either header or query needs to be provided.
      */
-    function ApiKeyCredentials(options) {
+    constructor(options) {
         if (!options || (options && !options.inHeader && !options.inQuery)) {
-            throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
+            throw new Error(`options cannot be null or undefined. Either "inHeader" or "inQuery" property of the options object needs to be provided.`);
         }
         this.inHeader = options.inHeader;
         this.inQuery = options.inQuery;
@@ -55970,64 +58530,58 @@ var ApiKeyCredentials = /** @class */ (function () {
     /**
      * Signs a request with the values provided in the inHeader and inQuery parameter.
      *
-     * @param {WebResourceLike} webResource The WebResourceLike to be signed.
-     * @returns {Promise<WebResourceLike>} The signed request object.
+     * @param webResource - The WebResourceLike to be signed.
+     * @returns The signed request object.
      */
-    ApiKeyCredentials.prototype.signRequest = function (webResource) {
+    signRequest(webResource) {
         if (!webResource) {
-            return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
+            return Promise.reject(new Error(`webResource cannot be null or undefined and must be of type "object".`));
         }
         if (this.inHeader) {
             if (!webResource.headers) {
                 webResource.headers = new HttpHeaders();
             }
-            for (var headerName in this.inHeader) {
+            for (const headerName in this.inHeader) {
                 webResource.headers.set(headerName, this.inHeader[headerName]);
             }
         }
         if (this.inQuery) {
             if (!webResource.url) {
-                return Promise.reject(new Error("url cannot be null in the request object."));
+                return Promise.reject(new Error(`url cannot be null in the request object.`));
             }
             if (webResource.url.indexOf("?") < 0) {
                 webResource.url += "?";
             }
-            for (var key in this.inQuery) {
+            for (const key in this.inQuery) {
                 if (!webResource.url.endsWith("?")) {
                     webResource.url += "&";
                 }
-                webResource.url += key + "=" + this.inQuery[key];
+                webResource.url += `${key}=${this.inQuery[key]}`;
             }
         }
         return Promise.resolve(webResource);
-    };
-    return ApiKeyCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var TopicCredentials = /** @class */ (function (_super) {
-    tslib.__extends(TopicCredentials, _super);
+class TopicCredentials extends ApiKeyCredentials {
     /**
      * Creates a new EventGrid TopicCredentials object.
      *
-     * @constructor
-     * @param {string} topicKey   The EventGrid topic key
+     * @param topicKey - The EventGrid topic key
      */
-    function TopicCredentials(topicKey) {
-        var _this = this;
+    constructor(topicKey) {
         if (!topicKey || (topicKey && typeof topicKey !== "string")) {
             throw new Error("topicKey cannot be null or undefined and must be of type string.");
         }
-        var options = {
+        const options = {
             inHeader: {
                 "aeg-sas-key": topicKey
             }
         };
-        _this = _super.call(this, options) || this;
-        return _this;
+        super(options);
     }
-    return TopicCredentials;
-}(ApiKeyCredentials));
+}
 
 Object.defineProperty(exports, 'isTokenCredential', {
     enumerable: true,
@@ -56052,9 +58606,12 @@ exports.TopicCredentials = TopicCredentials;
 exports.URLBuilder = URLBuilder;
 exports.URLQuery = URLQuery;
 exports.WebResource = WebResource;
+exports.XML_ATTRKEY = XML_ATTRKEY;
+exports.XML_CHARKEY = XML_CHARKEY;
 exports.applyMixins = applyMixins;
 exports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy;
 exports.createPipelineFromOptions = createPipelineFromOptions;
+exports.createSpanFunction = createSpanFunction;
 exports.delay = delay;
 exports.deserializationPolicy = deserializationPolicy;
 exports.deserializeResponseBody = deserializeResponseBody;